#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 bool isComMem = false; uint8 comMem[2]; //Commande en mémoire 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]) { if (!isComMem) //Aucune commande en mémoire { isComMem = true; comMem[0] = rq[0]; comMem[1] = rq [1]; } uint8 com = rq [0] && 0xE0; // récupération de la commande uint16 per = rq[0] && 0x1F; // récupération du pourcentage per = per << 8; per += rq[1]; per = (100*per)/8192; //2^13 = 100 % switch(com) { case 0: printf("REQUEST STATUS"); break; case 2: if (per == 0x0001) { sleep = false; printf("MODE EVEILLE"); } else if (per == 0x0000) { sleep = true; printf("MODE SOMMEIL"); } comMem[0] = rq[0]; comMem[1] = rq [1]; //save 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; uint8 comtest[2] = {0b00000000,0b00000000} 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(comtest); */ /* } */ request(comtest); } close(sTCP); close(sUDP); return 0; }