Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

286 řádky
7.5 KiB

  1. /*
  2. * File: WiFiCtrl.h
  3. * Author: JF
  4. *
  5. * Created on December 8, 2018, 6:52 AM
  6. */
  7. #ifndef WIFICTRL_H
  8. #define WIFICTRL_H
  9. #include "driver/include/m2m_wifi.h"
  10. #include "socket/include/socket.h"
  11. /*!
  12. * Used for code portability.
  13. */
  14. /*!
  15. * @typedef void (*tpfNmBspIsr) (void);
  16. * @brief Pointer to function.\n
  17. * Used as a data type of ISR function registered by \ref nm_bsp_register_isr
  18. * @return None
  19. */
  20. typedef void (*tpfNmBspIsr)(void);
  21. /*!
  22. * @ingroup DataTypes
  23. * @typedef unsigned char uint8;
  24. * @brief Range of values between 0 to 255
  25. */
  26. typedef unsigned char uint8;
  27. /*!
  28. * @ingroup DataTypes
  29. * @typedef unsigned short uint16;
  30. * @brief Range of values between 0 to 65535
  31. */
  32. typedef unsigned short uint16;
  33. /*!
  34. * @ingroup Data Types
  35. * @typedef unsigned long uint32;
  36. * @brief Range of values between 0 to 4294967295
  37. */
  38. typedef unsigned long uint32;
  39. /*!
  40. * @ingroup Data Types
  41. * @typedef signed char sint8;
  42. * @brief Range of values between -128 to 127
  43. */
  44. typedef signed char sint8;
  45. /*!
  46. * @ingroup DataTypes
  47. * @typedef signed short sint16;
  48. * @brief Range of values between -32768 to 32767
  49. */
  50. typedef signed short sint16;
  51. /*!
  52. * @ingroup DataTypes
  53. * @typedef signed long sint32;
  54. * @brief Range of values between -2147483648 to 2147483647
  55. */
  56. typedef signed long sint32;
  57. //@}
  58. int InitWiFi();
  59. void TickWiFi();
  60. int TurnOFFWiFi();
  61. int CloseSockets();
  62. char GetWiFiSate();
  63. uint32 GetCurIPAddress();
  64. int OpenTerminalServer();
  65. void SendTerminalData(uint8 *data, int size);
  66. void SentTerminalByte(uint8 data);
  67. int OpenNetworkServer();
  68. void SendNetworkData(uint8 *data, int size);
  69. void SentNetworkByte(uint8 data);
  70. int OpenSyslogServer();
  71. void SendSyslogData(uint8 *data, int size);
  72. void SendSyslogByte(uint8 data);
  73. int IsSyslogClientConnected();
  74. int OpenBootloaderServer();
  75. int CloseBootloaderServer();
  76. void SendBootloaderData(uint8 *data, int size);
  77. void SendBootloaderByte(uint8 data);
  78. int IsBootloaderClientConnected();
  79. int ConnectAudioInterface();
  80. int DisconnectAudioInterface();
  81. int SendAudioInterfaceData(uint8 *data, int size);
  82. int IsAudioInterfaceConnected();
  83. #define USE_STATIC_IP
  84. #define USE_IP_STORED_IN_FLASH 0
  85. // <<< Use Configuration Wizard in Context Menu >>>
  86. //<h> General network settings in AP (access point) mode
  87. // <s> Network SSID
  88. // <id> app_main_m2m_device_name
  89. #ifndef MAIN_M2M_SSID
  90. #define MAIN_M2M_SSID "WINC3400_00:00"
  91. #endif
  92. // <o> Security type
  93. // <1=> Wi-Fi network is not secured
  94. // <2=> WPA/WPA2 personal(PSK)
  95. // <3=> WEP (40 or 104) OPEN OR SHARED
  96. // <4=> WPA/WPA2 Enterprise.IEEE802.1x
  97. // <id> app_main_m2m_ap_sec
  98. #ifndef MAIN_M2M_AP_SEC
  99. #define MAIN_M2M_AP_SEC 1
  100. #endif
  101. // <s> Security key
  102. // <id> app_main_m2m_ap_key
  103. #ifndef MAIN_M2M_AP_KEY
  104. #define MAIN_M2M_AP_KEY "12345FFFFF"
  105. #endif
  106. // <o> SSID mode
  107. // <0=>SSID is visible to others
  108. // <1=>SSID is hidden
  109. // <id> app_main_m2m_ap_ssid_mode
  110. #ifndef MAIN_M2M_AP_SSID_MODE
  111. #define MAIN_M2M_AP_SSID_MODE 0
  112. #endif
  113. //</h>
  114. //<h> DHCP server IP address in AP (access point) mode
  115. // <o> DHCP server IP address 1 <0-255>
  116. // <id> app_ip_address_1
  117. #ifndef DHCP_IP_ADDRESS_1
  118. #define DHCP_IP_ADDRESS_1 192
  119. #endif
  120. // <o> DHCP server IP address 2 <0-255>
  121. // <id> app_ip_address_2
  122. #ifndef DHCP_IP_ADDRESS_2
  123. #define DHCP_IP_ADDRESS_2 168
  124. #endif
  125. // <o> DHCP server IP address 3 <0-255>
  126. // <id> app_ip_address_3
  127. #ifndef DHCP_IP_ADDRESS_3
  128. #define DHCP_IP_ADDRESS_3 50
  129. #endif
  130. // <o> DHCP server IP address 4 <0-255>
  131. // <id> app_ip_address_4
  132. #ifndef DHCP_IP_ADDRESS_4
  133. #define DHCP_IP_ADDRESS_4 1
  134. #endif
  135. //</h>
  136. // <<< end of configuration section >>>
  137. //Acces Point settings
  138. #define HOME_AP_SEC_TYPE M2M_WIFI_SEC_WPA_PSK
  139. //#define HOME_AP_NAME "ImprVEmard"
  140. //#define HOME_AP_PWD "12345fffff"
  141. //#define HOME_AP_NAME "ChaletVilleEmard"
  142. #define HOME_AP_NAME "ImprVilleEmard"
  143. //#define HOME_AP_NAME "ElRouteurDuChalet"
  144. //#define HOME_AP_NAME "LeChalet"
  145. //#define HOME_AP_PWD "Evinrude30"
  146. #define HOME_AP_PWD "12345fffff"
  147. #define TERMINAL_SERVER_PORT 85
  148. #define NETWORK_SERVER_PORT 86
  149. #define SYSLOG_SERVER_PORT 87
  150. #define BOOTLOADER_SERVER_PORT 99
  151. #define MASTERCTRL_SERVER_PORT 2182
  152. #define MASTERCTRL_IP_ADDRESS_1 192
  153. #define MASTERCTRL_IP_ADDRESS_2 168
  154. #define MASTERCTRL_IP_ADDRESS_3 50
  155. #define MASTERCTRL_IP_ADDRESS_4 110
  156. #define AUTH_CREDENTIALS {M2M_802_1X_USR_NAME, M2M_802_1X_PWD }
  157. //Module Static IP settings
  158. #define STATIC_IP_ADDRESS_1 192
  159. #define STATIC_IP_ADDRESS_2 168
  160. #define STATIC_IP_ADDRESS_3 50
  161. #define STATIC_IP_ADDRESS_4 122
  162. #define GATEWAY_ADDRESS_1 192
  163. #define GATEWAY_ADDRESS_2 168
  164. #define GATEWAY_ADDRESS_3 50
  165. #define GATEWAY_ADDRESS_4 1
  166. #define DEFAULT_DNS_ADD_1 8
  167. #define DEFAULT_DNS_ADD_2 8
  168. #define DEFAULT_DNS_ADD_3 8
  169. #define DEFAULT_DNS_ADD_4 8
  170. #define ALT_DNS_ADD_1 8
  171. #define ALT_DNS_ADD_2 8
  172. #define ALT_DNS_ADD_3 4
  173. #define ALT_DNS_ADD_4 4
  174. #define SUBNET_MASK_1 255
  175. #define SUBNET_MASK_2 255
  176. #define SUBNET_MASK_3 255
  177. #define SUBNET_MASK_4 0
  178. #define IP_TO_U32(add1,add2,add3,add4) (((add4<<24)&0xFF000000) | ((add3<<16)&0x00FF0000) | ((add2<<8)&0x0000FF00) | (add1&0x000000FF))
  179. /** Using broadcast address for simplicity. */
  180. #define MAIN_SERVER_PORT (80)
  181. /** Using IP address. */
  182. #define IPV4_BYTE(val, index) ((val >> (index * 8)) & 0xFF)
  183. /** Send buffer of TCP socket. */
  184. #define MAIN_PREFIX_BUFFER "GET /data/2.5/weather?q="
  185. #define MAIN_POST_BUFFER \
  186. "&mode=xml&units=metric&appid=c592e14137c3471fa9627b44f6649db4 HTTP/1.1\r\nHost: " \
  187. "api.openweathermap.org\r\nAccept: */*\r\n\r\n"
  188. /** Weather information provider server. */
  189. #define MAIN_WEATHER_SERVER_NAME "openweathermap.org"
  190. /** Input City Name. */
  191. #define MAIN_CITY_NAME "london"
  192. /** Receive buffer size. */
  193. #define MAIN_WIFI_M2M_BUFFER_SIZE 1024
  194. #define MAIN_M2M_DHCP_SERVER_IP \
  195. { \
  196. DHCP_IP_ADDRESS_1, DHCP_IP_ADDRESS_2, DHCP_IP_ADDRESS_3, DHCP_IP_ADDRESS_4 \
  197. }
  198. #define MAIN_HTTP_PROV_SERVER_DOMAIN_NAME "JF.com"
  199. #define MAIN_MAC_ADDRESS \
  200. { \
  201. 0xf8, 0xf0, 0x05, 0x45, 0xD4, 0x84 \
  202. }
  203. #define MAIN_HEX2ASCII(x) (((x) >= 10) ? (((x)-10) + 'A') : ((x) + '0'))
  204. #define TEMPERATURE_ABS(a) (((a) > 0) ? (a) : -(a))
  205. static tstrM2MAPConfig gstrM2MAPConfig = {MAIN_M2M_SSID,
  206. 1,
  207. 0,
  208. sizeof(MAIN_M2M_AP_KEY) - 1,
  209. MAIN_M2M_AP_KEY,
  210. MAIN_M2M_AP_SEC,
  211. MAIN_M2M_AP_SSID_MODE,
  212. MAIN_M2M_DHCP_SERVER_IP};
  213. static const char gacHttpProvDomainName[] = MAIN_HTTP_PROV_SERVER_DOMAIN_NAME;
  214. static uint8 gau8MacAddr[] = MAIN_MAC_ADDRESS;
  215. static sint8 gacDeviceName[] = MAIN_M2M_SSID;
  216. char mAPName[64];
  217. char mAPPassword[64];
  218. char mUseDHCP;
  219. #define MAIN_WAITING_TIME 3000
  220. #define MAIN_RETRY_COUNT 10
  221. extern SOCKET TerminalSocket;
  222. #endif /* WIFICTRL_H */