#include #include #include #include #include #include #include "serial.h" #include "ethernet.h" #include "w5100.h" #include "socket.h" #define MAC_SIZE 6 #define IPV4_SIZE 4 SOCKET sUDP=0; SOCKET sTCP=1; uint8_t addr[IPV4_SIZE]; uint16_t port; bool sleep = true; //Etat de l'interface : true = mode sommeil / false = mode eveillé void request(uint8 rq [2]) { uint8 com = rq [0] && 0xE0; uint16 per = rq[0] && 0x1F; per = per << 8; per += rq[1]; switch(com) { case 0: // ici renvoi 0b001 0000000000000 ou 0000000000001 si eveillé ou sommeil via TCP break; case 2: if (per == 0x0001) sleep = false; else if (per == 0x0000) sleep = true; break; case 3: break; case 4: break; case 5: break; } } int main(void) { uint8_t mac[MAC_SIZE] = {0xA0,0xBD,0xCD,0xDD,0xED,0xFD}; uint8_t ip[IPV4_SIZE] = {172,26,145,205}; uint8_t gateway[4] = {172,26,145,254}; uint8_t mask[4] = {255,255,255,0}; uint8 buf[2]; uint16 datasize; init_printf(); ethernet_init(mac,ip,gateway,mask); if (!socket(sUDP,Sn_MR_UDP,2020,0)) { return -1; } if (!socket(sTCP,Sn_MR_TCP,2020,0)) { return -1; } while(1) { if((datasize=recvfrom(sUDP,buf,sizeof(buf),addr,&port)) == 3) { request(buf); } } close(sTCP); close(sUDP); return 0; }