stuff
[oweals/gnunet.git] / src / transport / wlan / helper_common.c
1 /*
2  * helper_common.c
3  *
4  *  Created on: 28.03.2011
5  *      Author: David Brodski
6  */
7
8 #include <sys/socket.h>
9 #include <stdint.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <errno.h>
13 #include <resolv.h>
14 #include <string.h>
15 #include <utime.h>
16 #include <unistd.h>
17 #include <getopt.h>
18
19 #include "platform.h"
20 #include "gnunet_constants.h"
21 #include "gnunet_os_lib.h"
22 #include "gnunet_transport_plugin.h"
23 #include "transport.h"
24 #include "gnunet_util_lib.h"
25 #include "plugin_transport_wlan.h"
26 #include "gnunet_common.h"
27 #include "gnunet_transport_plugin.h"
28 //#include "gnunet_util_lib.h"
29
30 /**
31  * function to create GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL message for plugin
32  * @param buffer pointer to buffer for the message
33  * @param mac pointer to the mac address
34  * @return number of bytes written
35  */
36 int
37 send_mac_to_plugin(char * buffer, uint8_t * mac)
38 {
39
40   struct Wlan_Helper_Control_Message macmsg;
41
42   memcpy(macmsg.mac.mac, mac, sizeof(struct MacAddress));
43   macmsg.hdr.size = htons(sizeof(struct Wlan_Helper_Control_Message));
44   macmsg.hdr.type = htons(GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL);
45
46   memcpy(buffer, &macmsg, sizeof(struct Wlan_Helper_Control_Message));
47   return sizeof(struct Wlan_Helper_Control_Message);
48 }
49
50 /*
51    *  Copyright (c) 2008, Thomas d'Otreppe
52    *
53    *  Common OSdep stuff
54    *
55    *  This program is free software; you can redistribute it and/or modify
56    *  it under the terms of the GNU General Public License as published by
57    *  the Free Software Foundation; either version 2 of the License, or
58    *  (at your option) any later version.
59    *
60    *  This program is distributed in the hope that it will be useful,
61    *  but WITHOUT ANY WARRANTY; without even the implied warranty of
62    *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
63    *  GNU General Public License for more details.
64    *
65    *  You should have received a copy of the GNU General Public License
66    *  along with this program; if not, write to the Free Software
67    *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
68    */
69
70 /**
71  * Return the frequency in Mhz from a channel number
72  */
73 int getFrequencyFromChannel(int channel)
74 {
75         static int frequencies[] = {
76                 -1, // No channel 0
77                 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2484,
78                 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // Nothing from channel 15 to 34 (exclusive)
79                 5170, 5175, 5180, 5185, 5190, 5195, 5200, 5205, 5210, 5215, 5220, 5225, 5230, 5235, 5240, 5245,
80                 5250, 5255, 5260, 5265, 5270, 5275, 5280, 5285, 5290, 5295, 5300, 5305, 5310, 5315, 5320, 5325,
81                 5330, 5335, 5340, 5345, 5350, 5355, 5360, 5365, 5370, 5375, 5380, 5385, 5390, 5395, 5400, 5405,
82                 5410, 5415, 5420, 5425, 5430, 5435, 5440, 5445, 5450, 5455, 5460, 5465, 5470, 5475, 5480, 5485,
83                 5490, 5495, 5500, 5505, 5510, 5515, 5520, 5525, 5530, 5535, 5540, 5545, 5550, 5555, 5560, 5565,
84                 5570, 5575, 5580, 5585, 5590, 5595, 5600, 5605, 5610, 5615, 5620, 5625, 5630, 5635, 5640, 5645,
85                 5650, 5655, 5660, 5665, 5670, 5675, 5680, 5685, 5690, 5695, 5700, 5705, 5710, 5715, 5720, 5725,
86                 5730, 5735, 5740, 5745, 5750, 5755, 5760, 5765, 5770, 5775, 5780, 5785, 5790, 5795, 5800, 5805,
87                 5810, 5815, 5820, 5825, 5830, 5835, 5840, 5845, 5850, 5855, 5860, 5865, 5870, 5875, 5880, 5885,
88                 5890, 5895, 5900, 5905, 5910, 5915, 5920, 5925, 5930, 5935, 5940, 5945, 5950, 5955, 5960, 5965,
89                 5970, 5975, 5980, 5985, 5990, 5995, 6000, 6005, 6010, 6015, 6020, 6025, 6030, 6035, 6040, 6045,
90                 6050, 6055, 6060, 6065, 6070, 6075, 6080, 6085, 6090, 6095, 6100
91         };
92
93         return (channel > 0 && channel <= 221) ? frequencies[channel] : -1;
94 }
95
96 /**
97  * Return the channel from the frequency (in Mhz)
98  */
99 int getChannelFromFrequency(int frequency)
100 {
101         if (frequency >= 2412 && frequency <= 2472)
102                 return (frequency - 2407) / 5;
103         else if (frequency == 2484)
104                 return 14;
105         else if (frequency >= 5000 && frequency <= 6100)
106                 return (frequency - 5000) / 5;
107         else
108                 return -1;
109 }