/* CCC MSN 0.1b @ CCC 2011 Germany * Developers: * - Simpson * - 0xCC * * Base Codes: * - sign.c (For Mesh Communication) * - blink.c (For Led Notification) * * */ #include #include #include #include #include "basic/basic.h" #include "basic/config.h" #include "funk/nrf24l01p.h" #include "funk/rftransfer.h" #include "lcd/render.h" #include "lcd/print.h" #include "usetable.h" /*Global Communication Config*/ uint8_t mac[5] = {1,2,3,5,5}; struct NRF_CFG config = { .channel= 81, .txmac= "\x1\x2\x3\x5\x5", .nrmacs=1, .mac0= "\x1\x2\x3\x5\x5", .maclen ="\x20", }; /*Possible Messages*/ char msgs[5][20]={" Hi There!"," At Kourou"," At Baikonur","Party Hard!","Like a Boss!"}; void initDisplay(void); void initMesh(void); void waitMsg(void); void blink(void); /*Main Loop*/ void ram(void) { initDisplay(); uint8_t key; do { key = getInput(); if(key == BTN_DOWN) waitMsg(); else if (key == BTN_UP) initMesh(); } while(key != BTN_ENTER); } /*Message Receiver*/ void waitMsg() { uint8_t key; unsigned char buf[32]; char sender_nick[10]; int n,i; int index=0; int rcv =0; int try=0; do { key = getInput(); if(1) { nrf_config_set(&config); n = nrf_rcv_pkt_time(100,32,buf); getInputWaitTimeout(100); if(n == 32) { index=buf[0]; for(i=0;i<10;i++) sender_nick[i]=buf[i+1]; lcdClear(); lcdPrintln(""); lcdPrintln("CCC MSN 0.1b"); lcdPrintln("---------------"); lcdPrintln(msgs[index]); lcdPrintln(""); lcdPrintln("Received"); lcdPrintln(""); lcdPrintln("_______________"); lcdPrintln(sender_nick); lcdRefresh(); blink(); rcv=1; try=0; } else if(rcv) { lcdClear(); lcdPrintln(""); lcdPrintln("CCC MSN 0.1b"); lcdPrintln("-----------------"); lcdPrintln("Waiting..."); lcdPrint("Try "); lcdPrintln(IntToStr(try,5,0)); lcdPrintln(""); lcdPrintln(msgs[index]); lcdPrintln("_______________"); lcdPrintln(sender_nick); lcdRefresh(); } try++; } if(!rcv) { lcdClear(); lcdPrintln(""); lcdPrintln("CCC MSN 0.1b"); lcdPrintln("-----------------"); lcdPrintln("Waiting..."); lcdPrintln(""); lcdPrint("Try "); lcdPrintln(IntToStr(try,5,0)); lcdPrintln(""); lcdPrintln("_______________"); lcdPrintln("W8 Users Auto"); lcdRefresh(); } }while(key != BTN_ENTER); initDisplay(); } /*Starter*/ void initDisplay(void) { lcdClear(); lcdPrintln(""); lcdPrintln("CCC MSN 0.1b"); lcdNl(); lcdPrintln("Commands:"); lcdPrintln("UP/Down"); lcdPrintln("Press to Exit!"); lcdPrintln(""); lcdPrintln("_______________"); lcdPrintln(GLOBAL(nickname)); lcdRefresh(); } /*Start to Talk*/ void initMesh(void) { char buf[32]; uint8_t key; int index=0; int trys=0; int i; do { key = getInput(); if(key == BTN_RIGHT) index=(index+1)%5; if(key == BTN_UP) { memset(buf,0,32); buf[0]=index; for(i=0;i<11;i++) buf[i+1]=GLOBAL(nickname)[i]; nrf_config_set(&config); nrf_snd_pkt_crc(32,(uint8_t *)buf); trys=trys+1; } lcdClear(); lcdPrintln(""); lcdPrintln("CCC MSN 0.1b"); lcdPrintln("-----------------"); lcdPrintln(msgs[index]); lcdPrintln(""); lcdPrint("Try "); lcdPrintln(IntToStr(trys,5,0)); lcdPrintln(""); lcdPrintln("_______________"); lcdPrintln("UP To Send Msg"); lcdRefresh(); } while(key != BTN_ENTER); initDisplay(); } /*Led Blink*/ void blink(void) { for (int x=0;x<20;x++) { gpioSetValue (RB_LED1, x%2); delayms(50); } }