198 lines
3.6 KiB
C
198 lines
3.6 KiB
C
/* CCC MSN 0.1b @ CCC 2011 Germany
|
|
* Developers:
|
|
* - Simpson
|
|
* - 0xCC
|
|
*
|
|
* Base Codes:
|
|
* - sign.c (For Mesh Communication)
|
|
* - blink.c (For Led Notification)
|
|
*
|
|
* */
|
|
#include <sysinit.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
#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);
|
|
}
|
|
}
|