Merge branch 'master' of github.com:r0ket/r0ket
This commit is contained in:
commit
3f3d1a9d23
|
@ -73,6 +73,8 @@ clean:
|
||||||
for dir in $(SUBDIRS); do \
|
for dir in $(SUBDIRS); do \
|
||||||
$(MAKE) $(CONFIG_MAKE_PRINTDIRECTORY) -C $$dir clean; \
|
$(MAKE) $(CONFIG_MAKE_PRINTDIRECTORY) -C $$dir clean; \
|
||||||
done
|
done
|
||||||
|
$(MAKE) $(CONFIG_MAKE_PRINTDIRECTORY) -C l0dable clean
|
||||||
|
|
||||||
flash: all
|
flash: all
|
||||||
../tools/bootloader/autoflash
|
../tools/bootloader/autoflash
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
TARGET = LPC13xx
|
TARGET = LPC13xx
|
||||||
FLASH = 32K
|
FLASH = 32K
|
||||||
SRAM = 8K
|
SRAM = 8K
|
||||||
RAMCODE=2048
|
RAMCODE=2548
|
||||||
|
|
||||||
# For USB HID support the LPC134x reserves 384 bytes from the sram,
|
# For USB HID support the LPC134x reserves 384 bytes from the sram,
|
||||||
# if you don't want to use the USB features, just use 0 here.
|
# if you don't want to use the USB features, just use 0 here.
|
||||||
|
|
|
@ -4,6 +4,8 @@ Ck<hex>: set encryptionkey
|
||||||
Ct<hex>: set txmac
|
Ct<hex>: set txmac
|
||||||
Cc<hex>: set channel
|
Cc<hex>: set channel
|
||||||
Ct<hex>: set rxmac(0)
|
Ct<hex>: set rxmac(0)
|
||||||
|
Cl<hex>: set rxlens
|
||||||
|
Ce<hex>: sec encrpytion on/off
|
||||||
|
|
||||||
s <hex>: send packet
|
s <hex>: send packet
|
||||||
s+ <hex>: send packet 10 times
|
s+ <hex>: send packet 10 times
|
||||||
|
|
|
@ -22,59 +22,6 @@ void init_mesh(void){
|
||||||
initMesh();
|
initMesh();
|
||||||
};
|
};
|
||||||
|
|
||||||
void m_tset(void){
|
|
||||||
_timet=1311961112;
|
|
||||||
};
|
|
||||||
|
|
||||||
//# MENU debug MeshInfo
|
|
||||||
void m_time(void){
|
|
||||||
struct tm* tm;
|
|
||||||
char c[2]={0,0};
|
|
||||||
getInputWaitRelease();
|
|
||||||
delayms(100);
|
|
||||||
do{
|
|
||||||
lcdClear();
|
|
||||||
tm= mygmtime(getSeconds());
|
|
||||||
lcdPrint(IntToStr(tm->tm_hour,2,F_LONG));
|
|
||||||
lcdPrint(":");
|
|
||||||
lcdPrint(IntToStr(tm->tm_min,2,F_LONG|F_ZEROS));
|
|
||||||
lcdPrint(":");
|
|
||||||
lcdPrint(IntToStr(tm->tm_sec,2,F_LONG|F_ZEROS));
|
|
||||||
lcdNl();
|
|
||||||
lcdPrint(IntToStr(tm->tm_mday,2,F_LONG));
|
|
||||||
lcdPrint(".");
|
|
||||||
lcdPrint(IntToStr(tm->tm_mon+1,2,0));
|
|
||||||
lcdPrint(".");
|
|
||||||
lcdPrint(IntToStr(tm->tm_year+YEAR0,4,F_LONG|F_ZEROS));
|
|
||||||
lcdNl();
|
|
||||||
|
|
||||||
lcdNl();
|
|
||||||
lcdPrint("<");
|
|
||||||
|
|
||||||
for(int i=0;i<MESHBUFSIZE;i++){
|
|
||||||
if(!meshbuffer[i].flags&MF_USED){
|
|
||||||
c[0]='_';
|
|
||||||
}else{
|
|
||||||
c[0]=meshbuffer[i].pkt[0];
|
|
||||||
};
|
|
||||||
lcdPrint(c);
|
|
||||||
};
|
|
||||||
lcdPrintln(">");
|
|
||||||
|
|
||||||
lcdPrint("Gen:");
|
|
||||||
lcdPrintInt(meshgen);
|
|
||||||
lcdNl();
|
|
||||||
lcdRefresh();
|
|
||||||
delayms_queue(50);
|
|
||||||
}while ((getInputRaw())==BTN_NONE);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
inline void blink(char a, char b){
|
|
||||||
gpioSetValue (a,b, 1-gpioGetValue(a,b));
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
int choose(char * texts, int8_t menuselection){
|
int choose(char * texts, int8_t menuselection){
|
||||||
uint8_t numentries = 0;
|
uint8_t numentries = 0;
|
||||||
uint8_t visible_lines = 0;
|
uint8_t visible_lines = 0;
|
||||||
|
|
|
@ -13,147 +13,6 @@
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
|
|
||||||
//# MENU debug ChkLight
|
|
||||||
void ChkLight(void) {
|
|
||||||
int dx=0;
|
|
||||||
int dy=8;
|
|
||||||
dx=DoString(0,dy,"Light:");
|
|
||||||
DoString(0,dy+16,"Night:");
|
|
||||||
while ((getInputRaw())==BTN_NONE){
|
|
||||||
DoInt(dx,dy,GetLight());
|
|
||||||
DoInt(dx,dy+16,isNight());
|
|
||||||
DoInt(dx,dy+8,GLOBAL(daytrig));
|
|
||||||
lcdDisplay();
|
|
||||||
delayms_queue(100);
|
|
||||||
};
|
|
||||||
dx=DoString(0,dy+24,"Done.");
|
|
||||||
}
|
|
||||||
|
|
||||||
//# MENU debug ChkBattery
|
|
||||||
void ChkBattery(void) {
|
|
||||||
do{
|
|
||||||
lcdClear();
|
|
||||||
lcdPrintln("Voltage:");
|
|
||||||
lcdPrintln(IntToStr(GetVoltage(),5,0));
|
|
||||||
lcdNl();
|
|
||||||
lcdPrintln("Chrg_stat:");
|
|
||||||
if(gpioGetValue(RB_PWR_CHRG)){
|
|
||||||
lcdPrintln("1");
|
|
||||||
}else{
|
|
||||||
lcdPrintln("0");
|
|
||||||
};
|
|
||||||
lcdRefresh();
|
|
||||||
delayms_queue(100);
|
|
||||||
} while ((getInputRaw())==BTN_NONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
//# MENU debug Uptime
|
|
||||||
void uptime(void) {
|
|
||||||
int t;
|
|
||||||
int h;
|
|
||||||
char flag;
|
|
||||||
while ((getInputRaw())==BTN_NONE){
|
|
||||||
lcdClear();
|
|
||||||
lcdPrintln("Uptime:");
|
|
||||||
t=getTimer()/(1000/SYSTICKSPEED);
|
|
||||||
h=t/60/60;
|
|
||||||
flag=F_ZEROS;
|
|
||||||
if(h>0){
|
|
||||||
lcdPrint(IntToStr(h,2,flag));
|
|
||||||
lcdPrint("h");
|
|
||||||
flag|=F_LONG;
|
|
||||||
};
|
|
||||||
h=t/60%60;
|
|
||||||
if(h>0){
|
|
||||||
lcdPrint(IntToStr(h,2,flag));
|
|
||||||
lcdPrint("m");
|
|
||||||
flag|=F_LONG;
|
|
||||||
};
|
|
||||||
h=t%60;
|
|
||||||
if(h>0){
|
|
||||||
lcdPrint(IntToStr(h,2,flag));
|
|
||||||
lcdPrint("s");
|
|
||||||
};
|
|
||||||
lcdNl();
|
|
||||||
lcdNl();
|
|
||||||
lcdPrintln("Ticks:");
|
|
||||||
lcdPrint(IntToStr(_timectr,10,0));
|
|
||||||
lcdRefresh();
|
|
||||||
delayms_queue(200);
|
|
||||||
};
|
|
||||||
lcdPrintln("done.");
|
|
||||||
}
|
|
||||||
|
|
||||||
//# MENU debug Uuid
|
|
||||||
void uuid(void) {
|
|
||||||
IAP_return_t iap_return;
|
|
||||||
iap_return = iapReadSerialNumber();
|
|
||||||
lcdClear();
|
|
||||||
lcdPrintln("UUID:");
|
|
||||||
lcdPrintIntHex(iap_return.Result[0]); lcdNl();
|
|
||||||
lcdPrintIntHex(iap_return.Result[1]); lcdNl();
|
|
||||||
lcdPrintIntHex(iap_return.Result[2]); lcdNl();
|
|
||||||
lcdPrintIntHex(iap_return.Result[3]); lcdNl();
|
|
||||||
lcdNl();
|
|
||||||
lcdPrintln("Beacon ID:");
|
|
||||||
lcdPrintln(IntToStrX(GetUUID32(),4));
|
|
||||||
lcdRefresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
//# MENU debug Qstatus
|
|
||||||
void Qstatus(void) {
|
|
||||||
int dx=0;
|
|
||||||
int dy=8;
|
|
||||||
lcdClear();
|
|
||||||
dx=DoString(0,dy+16,"Qdepth:");
|
|
||||||
while ((getInputRaw())!=BTN_ENTER){
|
|
||||||
DoInt(dx,dy+16,(the_queue.qend-the_queue.qstart+MAXQENTRIES)%MAXQENTRIES);
|
|
||||||
lcdDisplay();
|
|
||||||
if(getInputRaw()!=BTN_NONE)
|
|
||||||
work_queue();
|
|
||||||
else
|
|
||||||
delayms(10);
|
|
||||||
};
|
|
||||||
dy+=16;
|
|
||||||
dx=DoString(0,dy,"Done.");
|
|
||||||
};
|
|
||||||
|
|
||||||
void blink_led0(void){
|
|
||||||
gpioSetValue (RB_LED0, 1-gpioGetValue(RB_LED0));
|
|
||||||
};
|
|
||||||
|
|
||||||
void tick_alive(void){
|
|
||||||
static int foo=0;
|
|
||||||
|
|
||||||
if(GLOBAL(alivechk)==0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(foo++>500/SYSTICKSPEED){
|
|
||||||
foo=0;
|
|
||||||
if(GLOBAL(alivechk)==2)
|
|
||||||
push_queue(blink_led0);
|
|
||||||
else
|
|
||||||
blink_led0();
|
|
||||||
};
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
//# MENU debug ShowSP
|
|
||||||
void getsp(void) {
|
|
||||||
int dx=0;
|
|
||||||
int dy=8;
|
|
||||||
int x;
|
|
||||||
lcdClear();
|
|
||||||
dx=DoString(0,dy,"SP:");
|
|
||||||
while ((getInputRaw())==BTN_NONE){
|
|
||||||
__asm( "mov %0, sp\n" : "=r" (x) :);
|
|
||||||
DoIntX(0,dy+8,x);
|
|
||||||
lcdDisplay();
|
|
||||||
delayms_queue(50);
|
|
||||||
};
|
|
||||||
dy+=16;
|
|
||||||
dx=DoString(0,dy,"Done.");
|
|
||||||
};
|
|
||||||
|
|
||||||
//# MENU msc
|
//# MENU msc
|
||||||
void msc_menu(void){
|
void msc_menu(void){
|
||||||
|
|
|
@ -29,10 +29,9 @@ uint32_t const beaconkey[4] = {
|
||||||
uint32_t remotekey[4] = {
|
uint32_t remotekey[4] = {
|
||||||
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
|
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
|
||||||
};
|
};
|
||||||
uint32_t meshkey[4] = {
|
extern uint32_t const meshkey[4];
|
||||||
0x0, 0x0, 0x0, 0x0
|
|
||||||
};
|
|
||||||
|
|
||||||
|
char funkencrypt=0;
|
||||||
|
|
||||||
#if CFG_USBMSC
|
#if CFG_USBMSC
|
||||||
#error "MSC is defined"
|
#error "MSC is defined"
|
||||||
|
@ -151,6 +150,7 @@ int process(char * input){
|
||||||
config.nrmacs=1;
|
config.nrmacs=1;
|
||||||
nrf_config_set(&config);
|
nrf_config_set(&config);
|
||||||
memcpy(thekey,meshkey,sizeof(thekey));
|
memcpy(thekey,meshkey,sizeof(thekey));
|
||||||
|
funkencrypt=1;
|
||||||
}else if(input[1]=='r'){
|
}else if(input[1]=='r'){
|
||||||
config.channel=REMOTE_CHANNEL;
|
config.channel=REMOTE_CHANNEL;
|
||||||
memcpy(config.txmac,REMOTE_MAC,5);
|
memcpy(config.txmac,REMOTE_MAC,5);
|
||||||
|
@ -159,6 +159,7 @@ int process(char * input){
|
||||||
config.nrmacs=1;
|
config.nrmacs=1;
|
||||||
nrf_config_set(&config);
|
nrf_config_set(&config);
|
||||||
memcpy(thekey,remotekey,sizeof(thekey));
|
memcpy(thekey,remotekey,sizeof(thekey));
|
||||||
|
funkencrypt=1;
|
||||||
}else if(input[1]=='b'){
|
}else if(input[1]=='b'){
|
||||||
config.channel=BEACON_CHANNEL;
|
config.channel=BEACON_CHANNEL;
|
||||||
memcpy(config.txmac,BEACON_MAC,5);
|
memcpy(config.txmac,BEACON_MAC,5);
|
||||||
|
@ -167,6 +168,7 @@ int process(char * input){
|
||||||
config.nrmacs=1;
|
config.nrmacs=1;
|
||||||
nrf_config_set(&config);
|
nrf_config_set(&config);
|
||||||
memcpy(thekey,beaconkey,sizeof(thekey));
|
memcpy(thekey,beaconkey,sizeof(thekey));
|
||||||
|
funkencrypt=1;
|
||||||
}else if(input[1]=='?'){
|
}else if(input[1]=='?'){
|
||||||
nrf_config_get(&config);
|
nrf_config_get(&config);
|
||||||
puts_plus("Ch: ");puts_plus(IntToStrX( config.channel,2 )); puts_plus("\r\n");
|
puts_plus("Ch: ");puts_plus(IntToStrX( config.channel,2 )); puts_plus("\r\n");
|
||||||
|
@ -202,6 +204,10 @@ int process(char * input){
|
||||||
puts_plus(" ");
|
puts_plus(" ");
|
||||||
};
|
};
|
||||||
puts_plus("\r\n");
|
puts_plus("\r\n");
|
||||||
|
|
||||||
|
puts_plus("encrypt : ");
|
||||||
|
puts_plus(IntToStrX( funkencrypt,2 ));
|
||||||
|
puts_plus("\r\n");
|
||||||
};
|
};
|
||||||
}else if(input[0]=='C'){
|
}else if(input[0]=='C'){
|
||||||
int len;
|
int len;
|
||||||
|
@ -228,6 +234,15 @@ int process(char * input){
|
||||||
}else if(input[1]=='c'){
|
}else if(input[1]=='c'){
|
||||||
config.channel=*hex;
|
config.channel=*hex;
|
||||||
nrf_config_set(&config);
|
nrf_config_set(&config);
|
||||||
|
}else if(input[1]=='l'){
|
||||||
|
config.maclen[0]=uint8ptouint32(hex);
|
||||||
|
config.maclen[1]=uint8ptouint32(hex+4);
|
||||||
|
config.maclen[2]=uint8ptouint32(hex+8);
|
||||||
|
config.maclen[3]=uint8ptouint32(hex+12);
|
||||||
|
config.maclen[4]=uint8ptouint32(hex+16);
|
||||||
|
nrf_config_set(&config);
|
||||||
|
}else if(input[1]=='e'){
|
||||||
|
funkencrypt= uint8ptouint32(hex);
|
||||||
};
|
};
|
||||||
}else if (input[0]=='s'){
|
}else if (input[0]=='s'){
|
||||||
__attribute__ ((aligned (4))) uint8_t buf[32];
|
__attribute__ ((aligned (4))) uint8_t buf[32];
|
||||||
|
@ -251,7 +266,7 @@ int process(char * input){
|
||||||
len+=2; // Add crc!
|
len+=2; // Add crc!
|
||||||
|
|
||||||
memcpy(buf,hex,len);
|
memcpy(buf,hex,len);
|
||||||
status=nrf_snd_pkt_crc_encr(len,buf,thekey);
|
status=nrf_snd_pkt_crc_encr(len,buf,funkencrypt?thekey:NULL);
|
||||||
|
|
||||||
puts_plus("P ");
|
puts_plus("P ");
|
||||||
puts_plus("[");puts_plus(IntToStrX(len,2));puts_plus("] ");
|
puts_plus("[");puts_plus(IntToStrX(len,2));puts_plus("] ");
|
||||||
|
@ -266,7 +281,7 @@ int process(char * input){
|
||||||
while(--ctr>0){
|
while(--ctr>0){
|
||||||
delayms(23);
|
delayms(23);
|
||||||
memcpy(buf,hex,len);
|
memcpy(buf,hex,len);
|
||||||
status=nrf_snd_pkt_crc_encr(len,buf,thekey);
|
status=nrf_snd_pkt_crc_encr(len,buf,funkencrypt?thekey:NULL);
|
||||||
};
|
};
|
||||||
}else if (input[1]=='t'){
|
}else if (input[1]=='t'){
|
||||||
static int ctr=1;
|
static int ctr=1;
|
||||||
|
@ -283,7 +298,7 @@ int process(char * input){
|
||||||
|
|
||||||
buf[12]=0xff; // salt (0xffff always?)
|
buf[12]=0xff; // salt (0xffff always?)
|
||||||
buf[13]=0xff;
|
buf[13]=0xff;
|
||||||
status=nrf_snd_pkt_crc_encr(16,buf,thekey);
|
status=nrf_snd_pkt_crc_encr(16,buf,funkencrypt?thekey:NULL);
|
||||||
}else{
|
}else{
|
||||||
};
|
};
|
||||||
puts_plus("S state=");
|
puts_plus("S state=");
|
||||||
|
@ -310,7 +325,7 @@ int process(char * input){
|
||||||
puts_plus("D receive ...\r\n");
|
puts_plus("D receive ...\r\n");
|
||||||
nrf_rcv_pkt_start();
|
nrf_rcv_pkt_start();
|
||||||
do{
|
do{
|
||||||
len=nrf_rcv_pkt_poll_dec(sizeof(buf),buf,thekey);
|
len=nrf_rcv_pkt_poll_dec(sizeof(buf),buf,funkencrypt?thekey:NULL);
|
||||||
// Receive
|
// Receive
|
||||||
if(len==0||len==-1||len==-2){ //No pkt, Pkt2large, NoPktError
|
if(len==0||len==-1||len==-2){ //No pkt, Pkt2large, NoPktError
|
||||||
delayms(10);
|
delayms(10);
|
||||||
|
|
|
@ -30,7 +30,7 @@ void execute_file (const char * fname, uint8_t checksignature, uint8_t decode){
|
||||||
dst=(void (*)(void)) (sram_top);
|
dst=(void (*)(void)) (sram_top);
|
||||||
lcdPrint("T:"); lcdPrintIntHex(dst); lcdNl();
|
lcdPrint("T:"); lcdPrintIntHex(dst); lcdNl();
|
||||||
*/
|
*/
|
||||||
dst=(void (*)(void)) 0x10001800;
|
dst=(void (*)(void)) 0x1000160C;
|
||||||
|
|
||||||
res=f_open(&file, fname, FA_OPEN_EXISTING|FA_READ);
|
res=f_open(&file, fname, FA_OPEN_EXISTING|FA_READ);
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ char meshincctr=0; // Generation
|
||||||
MPKT meshbuffer[MESHBUFSIZE];
|
MPKT meshbuffer[MESHBUFSIZE];
|
||||||
|
|
||||||
uint32_t const meshkey[4] = {
|
uint32_t const meshkey[4] = {
|
||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000
|
0x00000042, 0x000005ec, 0x00000023, 0x00000005
|
||||||
};
|
};
|
||||||
|
|
||||||
struct NRF_CFG oldconfig;
|
struct NRF_CFG oldconfig;
|
||||||
|
|
|
@ -153,13 +153,12 @@ int nrf_rcv_pkt_poll_dec(int maxsize, uint8_t * pkt, uint32_t const key[4]){
|
||||||
return len;
|
return len;
|
||||||
|
|
||||||
cmpcrc=crc16(pkt,len-2);
|
cmpcrc=crc16(pkt,len-2);
|
||||||
if(cmpcrc != (pkt[len-2] <<8 | pkt[len-1])) {
|
if(key!=NULL)
|
||||||
xxtea_decode_words((uint32_t*)pkt,len/4,key);
|
xxtea_decode_words((uint32_t*)pkt,len/4,key);
|
||||||
|
|
||||||
cmpcrc=crc16(pkt,len-2);
|
cmpcrc=crc16(pkt,len-2);
|
||||||
if(cmpcrc != (pkt[len-2] <<8 | pkt[len-1])) {
|
if(cmpcrc != (pkt[len-2] <<8 | pkt[len-1])) {
|
||||||
return -3; // CRC failed
|
return -3; // CRC failed
|
||||||
};
|
|
||||||
};
|
};
|
||||||
return len;
|
return len;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue