Advertisement
Guest User

Untitled

a guest
Oct 19th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.33 KB | None | 0 0
  1. /* C header files */
  2. #include <stdint.h>
  3. #include <stddef.h>
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6. /* Driver Header files */
  7. #include <ti/drivers/GPIO.h>
  8. #include <ti/drivers/SPI.h>
  9. #include <ti/drivers/net/wifi/slnetifwifi.h>
  10. /* RTOS header files */
  11. #include <ti/sysbios/BIOS.h>
  12. /* POSIX Header files */
  13. #include <ti/posix/ccs/pthread.h>
  14. #include <ti/posix/ccs/semaphore.h>
  15.  
  16. /* Eigen headers */
  17. #include "uart_term.h"
  18.  
  19. #include "bestanden.h"
  20.  
  21. /* Taken */
  22. void *App_Task(void * args);
  23.  
  24. /* Functies */
  25. void PingResultaat(SlNetAppPingReport_t*);
  26. int StelWifiIn(SlWlanSecParams_t *, SlWlanSecParamsExt_t *, _i8 *);
  27. void MaakTaak(_u8 prioriteit, _u16 stackSize, void*(*functie)(void * args));
  28.  
  29. //Semaphore voor taaksynchronisatie
  30. sem_t wachtenOpIP;
  31.  
  32. /* Wifi instellingen */
  33. #define IDENTITY "0939321@hr.nl"
  34. #define SSID "eduroam"
  35.  
  36. //1e keer wordt altijd een ww gevraagd. Deze flag is om het te overschrijven.
  37. #define VRAAG_NIEUW_WACHTWOORD false
  38.  
  39.  
  40. void *mainThread(void *arg0)
  41. {
  42. //variabelen
  43. int Status;
  44. SlWlanSecParams_t SecParams; //wifi
  45. SlWlanSecParamsExt_t SecExtParams; //wifi enterprise
  46. _i8 ww[64]; //buffer om een wifi wachtwoord in op te slaan
  47.  
  48.  
  49. /* Intialisaties */
  50. sem_init(&wachtenOpIP,0,0); //semaphore voor synchronisatie
  51. SPI_init();
  52. InitTerm(); //UART functionaliteiten van TI
  53.  
  54. // prio stack functie
  55. MaakTaak(9, 2048, sl_Task); //nodig voor wifi api
  56. MaakTaak(2, 2048, App_Task); //onze aplicatie
  57.  
  58. /* Hello */
  59. printf("\tApplicatie gestart. Overige meldingen zijn te vinden op de UART terminal op 115200 baud.\n");
  60. UART_PRINT("Starten.\r\n");
  61.  
  62.  
  63. /* wifi instellen en verbinden */
  64. StelWifiIn(&SecParams, &SecExtParams, ww);
  65.  
  66. Status = sl_WlanConnect((_i8*)SSID, //ssid
  67. strlen(SSID), //lengte van ssid
  68. 0,
  69. &SecParams, //security params
  70. &SecExtParams); //extended security params
  71. if(Status!=0)
  72. {
  73. UART_PRINT("Wifi instellingen fout: %d\r\n", Status);
  74. }
  75.  
  76.  
  77. /*!
  78. * De thread kan nu stoppen.
  79. * Wachten op succesvolle verbinding zodat de App-thread
  80. * verder kan gaan.
  81. *
  82. * @see: SimpleLinkNetAppEventHandler(),
  83. * @see: App_Task(void * args)
  84. *
  85. */
  86. return 0;
  87. }
  88.  
  89. void *App_Task(void * args)
  90. {
  91. _u16 len = sizeof(SlNetCfgIpV4Args_t);
  92. _u16 ConfigOpt = 0;
  93.  
  94. SlNetCfgIpV4Args_t ipV4 = {0}; //struct voor ip
  95.  
  96.  
  97.  
  98. /* Wachten op een ip adres, daarna kunnen we verder.
  99. * zie ook SimpleLinkNetAppEventHandler() */
  100. sem_wait(&wachtenOpIP);
  101.  
  102. //haal ip op
  103. sl_NetCfgGet(SL_NETCFG_IPV4_STA_ADDR_MODE,
  104. &ConfigOpt,
  105. &len,
  106. (_u8 *)&ipV4
  107. );
  108.  
  109. //pretty print ip
  110. UART_PRINT( "\r\n\r\n"
  111. "Mijn IP\t %d.%d.%d.%d\r\n"
  112. "MASK\t %d.%d.%d.%d\r\n"
  113. "GW\t %d.%d.%d.%d\r\n"
  114. "DNS\t %d.%d.%d.%d\r\n\r\n",
  115. SL_IPV4_BYTE(ipV4.Ip,3),SL_IPV4_BYTE(ipV4.Ip,2),SL_IPV4_BYTE(ipV4.Ip,1),SL_IPV4_BYTE(ipV4.Ip,0),
  116. SL_IPV4_BYTE(ipV4.IpMask,3),SL_IPV4_BYTE(ipV4.IpMask,2),SL_IPV4_BYTE(ipV4.IpMask,1),SL_IPV4_BYTE(ipV4.IpMask,0),
  117. SL_IPV4_BYTE(ipV4.IpGateway,3),SL_IPV4_BYTE(ipV4.IpGateway,2),SL_IPV4_BYTE(ipV4.IpGateway,1),SL_IPV4_BYTE(ipV4.IpGateway,0),
  118. SL_IPV4_BYTE(ipV4.IpDnsServer,3),SL_IPV4_BYTE(ipV4.IpDnsServer,2),SL_IPV4_BYTE(ipV4.IpDnsServer,1),SL_IPV4_BYTE(ipV4.IpDnsServer,0));
  119.  
  120.  
  121. char ontvangBuffer[100];
  122.  
  123. SlSockAddrIn_t mijnAdres;
  124. mijnAdres.sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(145,24,206,28));
  125. mijnAdres.sin_family = SL_AF_INET;
  126. mijnAdres.sin_port = sl_Htons(2000);
  127.  
  128. _i16 retsocket;
  129. retsocket = sl_Socket(SL_AF_INET, SL_SOCK_STREAM, SL_IPPROTO_TCP);
  130.  
  131. // sl_SetSockOpt(retsocket, SL_SOL_SOCKET , optname, optval, optlen)
  132. // sl_Bind(retsocket, &mijnAdres, sizeof(SlSockAddrIn_t));
  133. // sl_Listen(retsocket, 1);
  134. // _i16 server;
  135. sl_Connect(retsocket, (SlSockAddr_t *)&mijnAdres, sizeof(SlSockAddrIn_t));
  136. // _i16 client1;
  137. // client1 = sl_Accept(retsocket, &mijnAdres, sizeof(SlSockAddrIn_t));
  138.  
  139. /* while(1)
  140. {
  141. if (client1 == 1)
  142. {
  143. sl_Send(client1, "Hallo, dit is een test", 22, 0);
  144. }
  145. }*/
  146.  
  147.  
  148. sl_Recv(retsocket, &ontvangBuffer, 30, 0);
  149. ontvangBuffer[30] = '\0';
  150. UART_PRINT("%s\n\r", ontvangBuffer);
  151. sl_Send(retsocket, &ontvangBuffer, 22, 0);
  152. sl_Recv(retsocket, &ontvangBuffer, 19, 0);
  153. ontvangBuffer[19] = '\0';
  154. UART_PRINT("%s\n\r", ontvangBuffer);
  155.  
  156.  
  157.  
  158.  
  159. }
  160.  
  161. void MaakTaak(_u8 prioriteit, _u16 stackSize, void*(*functie)(void * args))
  162. {
  163. pthread_t Thread;
  164. pthread_attr_t attrs;
  165. struct sched_param priParam;
  166. int retc;
  167.  
  168. /* sl_task thread maken. Dit handelt alle callbacks van wifi af */
  169. priParam.sched_priority = prioriteit;
  170. pthread_attr_init(&attrs);
  171. pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_DETACHED); //ontkoppelde taak
  172. pthread_attr_setschedparam(&attrs, &priParam); //prioriteit instellen
  173. pthread_attr_setstacksize(&attrs, stackSize); //stacksize instellen
  174.  
  175. retc = pthread_create(&Thread, &attrs, functie, NULL); //taak starten
  176. if (retc != 0) {
  177. /* pthread_create() failed */
  178. UART_PRINT("Taak fout: %d",retc);
  179. while (1);
  180. }
  181. }
  182.  
  183. int StelWifiIn(SlWlanSecParams_t * SecParams, SlWlanSecParamsExt_t * SecExtParams, _i8 * wachtwoord)
  184. {
  185. int Status;
  186. SlDateTime_t dateTime={0};
  187. _u8 serverAuthenticatie = 0;
  188.  
  189. /* NWP starten en configureren */
  190. sl_Start(0, 0, 0);
  191. Status = sl_WlanSetMode(ROLE_STA); //Station modus
  192.  
  193. /* Om te voorkomen dat jouw wachtwoord in je code is te vinden wordt het
  194. * geschreven naar een bestand op de flash.
  195. *
  196. * Je moet eenmalig het wachtwoord geven, elke keer daarna kun je het
  197. * alleen uitlezen. Als je het wilt aanpassen dan moet parameter twee
  198. * true worden.
  199. * */
  200. leesWachtwoord((char *)wachtwoord, VRAAG_NIEUW_WACHTWOORD);
  201.  
  202. SecParams->Key = wachtwoord;
  203. SecParams->KeyLen = strlen((const char*)wachtwoord);
  204. SecParams->Type = SL_WLAN_SEC_TYPE_WPA_ENT;
  205.  
  206. /* extended alleen nodig voor enterprise wifi */
  207. SecExtParams->User = IDENTITY;
  208. SecExtParams->UserLen = strlen(IDENTITY);
  209. SecExtParams->AnonUser = 0;
  210. SecExtParams->AnonUserLen = 0;
  211. SecExtParams->EapMethod = SL_WLAN_ENT_EAP_METHOD_PEAP0_MSCHAPv2;
  212.  
  213. /* Jaar instellen zodat het certificaat niet wordt afgekeurd */
  214. dateTime.tm_year = (_u32)2018; // Year (YYYY format)
  215.  
  216. /* NWP herstarten om STA modus ook te gebruiken*/
  217. sl_Stop(0);
  218. sl_Start(0, 0, 0);
  219.  
  220. //tijd opslaan
  221. sl_DeviceSet(SL_DEVICE_GENERAL,
  222. SL_DEVICE_GENERAL_DATE_TIME,
  223. sizeof(SlDateTime_t),
  224. (_u8 *)(&dateTime));
  225.  
  226. /* Eduroam geeft geen CA certificaat uit, dus check uitzetten */
  227. Status = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_DISABLE_ENT_SERVER_AUTH,1,&serverAuthenticatie);
  228.  
  229. return Status;
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement