Merge branch 'master' of github.com:r0ket/r0ket
This commit is contained in:
commit
54e29bc10b
|
@ -11,7 +11,7 @@ FATFS FatFs[_VOLUMES]; /* File system object for logical drive */
|
||||||
|
|
||||||
#define CONFIGLEN 2
|
#define CONFIGLEN 2
|
||||||
int lcdInitConfig(){
|
int lcdInitConfig(){
|
||||||
FIL file[2]; /* File objects */
|
FIL file; /* File objects */
|
||||||
BYTE buf[CONFIGLEN];
|
BYTE buf[CONFIGLEN];
|
||||||
UINT readbytes;
|
UINT readbytes;
|
||||||
int res;
|
int res;
|
||||||
|
@ -24,13 +24,13 @@ int lcdInitConfig(){
|
||||||
return 1;
|
return 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
res=f_open(&file[0], "r0ket.cfg", FA_OPEN_EXISTING|FA_READ);
|
res=f_open(&file, "r0ket.cfg", FA_OPEN_EXISTING|FA_READ);
|
||||||
lcdPrint("open:");
|
lcdPrint("open:");
|
||||||
lcdPrintln(f_get_rc_string(res));
|
lcdPrintln(f_get_rc_string(res));
|
||||||
if(res){
|
if(res){
|
||||||
lcdPrintln("new r0ket.cfg...");
|
lcdPrintln("new r0ket.cfg...");
|
||||||
|
|
||||||
res=f_open(&file[0], "r0ket.cfg", FA_OPEN_ALWAYS|FA_WRITE);
|
res=f_open(&file, "r0ket.cfg", FA_OPEN_ALWAYS|FA_WRITE);
|
||||||
lcdPrint("create:");
|
lcdPrint("create:");
|
||||||
lcdPrintln(f_get_rc_string(res));
|
lcdPrintln(f_get_rc_string(res));
|
||||||
if(res){
|
if(res){
|
||||||
|
@ -39,7 +39,7 @@ int lcdInitConfig(){
|
||||||
|
|
||||||
buf[0]='0';
|
buf[0]='0';
|
||||||
buf[1]='0';
|
buf[1]='0';
|
||||||
res = f_write(&file[0], buf, 2, &readbytes);
|
res = f_write(&file, buf, 2, &readbytes);
|
||||||
lcdPrint("write:");
|
lcdPrint("write:");
|
||||||
lcdPrintln(f_get_rc_string(res));
|
lcdPrintln(f_get_rc_string(res));
|
||||||
if(res){
|
if(res){
|
||||||
|
@ -50,7 +50,7 @@ int lcdInitConfig(){
|
||||||
lcdPrintInt(readbytes);
|
lcdPrintInt(readbytes);
|
||||||
lcdPrintln("b");
|
lcdPrintln("b");
|
||||||
|
|
||||||
res=f_close(&file[0]);
|
res=f_close(&file);
|
||||||
lcdPrint("close:");
|
lcdPrint("close:");
|
||||||
lcdPrintln(f_get_rc_string(res));
|
lcdPrintln(f_get_rc_string(res));
|
||||||
if(res){
|
if(res){
|
||||||
|
@ -62,7 +62,7 @@ int lcdInitConfig(){
|
||||||
for(int i=0;i<CONFIGLEN;i++)
|
for(int i=0;i<CONFIGLEN;i++)
|
||||||
buf[i]=0;
|
buf[i]=0;
|
||||||
|
|
||||||
res = f_read(&file[0], buf, 2, &readbytes);
|
res = f_read(&file, buf, 2, &readbytes);
|
||||||
lcdPrint("read:");
|
lcdPrint("read:");
|
||||||
lcdPrintln(f_get_rc_string(res));
|
lcdPrintln(f_get_rc_string(res));
|
||||||
if(res){
|
if(res){
|
||||||
|
@ -79,7 +79,7 @@ int lcdInitConfig(){
|
||||||
if(buf[1] == '1')
|
if(buf[1] == '1')
|
||||||
lcdToggleFlag(LCD_MIRRORX);
|
lcdToggleFlag(LCD_MIRRORX);
|
||||||
|
|
||||||
res=f_close(&file[0]);
|
res=f_close(&file);
|
||||||
lcdPrint("close:");
|
lcdPrint("close:");
|
||||||
lcdPrintln(f_get_rc_string(res));
|
lcdPrintln(f_get_rc_string(res));
|
||||||
if(res){
|
if(res){
|
||||||
|
|
|
@ -14,6 +14,7 @@ OBJS += crc.o
|
||||||
OBJS += menu.o
|
OBJS += menu.o
|
||||||
OBJS += xxtea.o
|
OBJS += xxtea.o
|
||||||
OBJS += ecc.o
|
OBJS += ecc.o
|
||||||
|
OBJS += byteorder.o
|
||||||
|
|
||||||
LIBNAME=basic
|
LIBNAME=basic
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
void uint32touint8p(uint32_t v, uint8_t *p)
|
||||||
|
{
|
||||||
|
*p++ = (v>>24)&0xFF;
|
||||||
|
*p++ = (v>>16)&0xFF;
|
||||||
|
*p++ = (v>> 8)&0xFF;
|
||||||
|
*p++ = (v>> 0)&0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t uint8ptouint32(uint8_t *p)
|
||||||
|
{
|
||||||
|
uint32_t v;
|
||||||
|
v |= *p++; v<<=8;
|
||||||
|
v |= *p++; v<<=8;
|
||||||
|
v |= *p++; v<<=8;
|
||||||
|
v |= *p;
|
||||||
|
return v;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
#ifndef _BYTEORDER_H_
|
||||||
|
#define _BYTEORDER_H_
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
void uint32touint8p(uint32_t v, uint8_t *p);
|
||||||
|
uint32_t uint8ptouint32(uint8_t *p);
|
||||||
|
|
||||||
|
#endif
|
|
@ -14,86 +14,6 @@
|
||||||
#define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (k[(p&3)^e] ^ z)))
|
#define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (k[(p&3)^e] ^ z)))
|
||||||
#include "xxtea.h"
|
#include "xxtea.h"
|
||||||
|
|
||||||
uint32_t charp2uint32(uint8_t *data, uint8_t bytes)
|
|
||||||
{
|
|
||||||
uint32_t r = 0;
|
|
||||||
if( bytes ){
|
|
||||||
r |= *data++;
|
|
||||||
}
|
|
||||||
if( bytes > 1){
|
|
||||||
r<<=8;
|
|
||||||
r |= *data++;
|
|
||||||
}
|
|
||||||
if( bytes > 2){
|
|
||||||
r<<=8;
|
|
||||||
r |= *data++;
|
|
||||||
}
|
|
||||||
if( bytes > 3){
|
|
||||||
r<<=8;
|
|
||||||
r |= *data++;
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
void charp2uint32p(uint8_t* data, uint8_t n, uint32_t *v)
|
|
||||||
{
|
|
||||||
int i,j=0;
|
|
||||||
int fullwords = n/4;
|
|
||||||
for(i=0; i<fullwords*4; i+=4){
|
|
||||||
v[j++] = charp2uint32(data+i,4);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t extrabytes = n - i;
|
|
||||||
v[j] = charp2uint32(data+i,extrabytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
void uint322charp(uint32_t data, uint8_t *buf, uint8_t bytes)
|
|
||||||
{
|
|
||||||
if( bytes )
|
|
||||||
buf[0] = data>>24;
|
|
||||||
if( bytes > 1)
|
|
||||||
buf[1] = (data>>16)&0xFF;
|
|
||||||
if( bytes > 2)
|
|
||||||
buf[2] = (data>>8)&0xFF;
|
|
||||||
if( bytes > 3)
|
|
||||||
buf[3] = (data>>0)&0xFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
void uint32p2charp(uint8_t* data, uint8_t n, uint32_t *v)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int fullwords = n/4;
|
|
||||||
|
|
||||||
for(i=0; i<fullwords; i++){
|
|
||||||
uint322charp(v[i],data+i*4,4);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t extrabytes = n - fullwords*4;
|
|
||||||
uint322charp(v[i],data+i*4,extrabytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxtea_encode(uint8_t *data, int n, uint32_t const k[4])
|
|
||||||
{
|
|
||||||
uint32_t v[8]; //maximum 32 bytes
|
|
||||||
int words = (n+3)/4;
|
|
||||||
if( words > 8 )
|
|
||||||
return;
|
|
||||||
charp2uint32p(data, n, v);
|
|
||||||
xxtea_encode_words(v, words, k);
|
|
||||||
uint32p2charp(data, n, v);
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxtea_decode(uint8_t *data, int n, uint32_t const k[4])
|
|
||||||
{
|
|
||||||
uint32_t v[8]; //maximum 32 bytes
|
|
||||||
int words = (n+3)/4;
|
|
||||||
if( words > 8 )
|
|
||||||
return;
|
|
||||||
charp2uint32p(data, n, v);
|
|
||||||
xxtea_decode_words(v, words, k);
|
|
||||||
uint32p2charp(data, n, v);
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxtea_encode_words(uint32_t *v, int n, uint32_t const k[4])
|
void xxtea_encode_words(uint32_t *v, int n, uint32_t const k[4])
|
||||||
{
|
{
|
||||||
if(k[0] == 0 && k[1] == 0 && k[2] == 0 && k[3] == 0) return;
|
if(k[0] == 0 && k[1] == 0 && k[2] == 0 && k[3] == 0) return;
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
#ifndef _XXTEA_H_
|
#ifndef _XXTEA_H_
|
||||||
#define _XXTEA_H_
|
#define _XXTEA_H_
|
||||||
|
|
||||||
uint32_t charp2uint32(uint8_t *data, uint8_t bytes);
|
|
||||||
void charp2uint32p(uint8_t* data, uint8_t n, uint32_t *v);
|
|
||||||
void uint322charp(uint32_t data, uint8_t *buf, uint8_t bytes);
|
|
||||||
void uint32p2charp(uint8_t* data, uint8_t n, uint32_t *v);
|
|
||||||
void xxtea_encode(uint8_t *data, int n, uint32_t const k[4]);
|
|
||||||
void xxtea_decode(uint8_t *v, int n, uint32_t const k[4]);
|
|
||||||
void xxtea_encode_words(uint32_t *v, int n, uint32_t const k[4]);
|
void xxtea_encode_words(uint32_t *v, int n, uint32_t const k[4]);
|
||||||
void xxtea_decode_words(uint32_t *v, int n, uint32_t const k[4]);
|
void xxtea_decode_words(uint32_t *v, int n, uint32_t const k[4]);
|
||||||
|
|
||||||
|
|
|
@ -3,19 +3,45 @@
|
||||||
#include "funk/nrf24l01p.h"
|
#include "funk/nrf24l01p.h"
|
||||||
#include "basic/byteorder.h"
|
#include "basic/byteorder.h"
|
||||||
#include "sysdefs.h"
|
#include "sysdefs.h"
|
||||||
|
#include "filesystem/ff.h"
|
||||||
|
|
||||||
const uint32_t key[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};
|
const uint32_t key[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};
|
||||||
const uint8_t enctoggle = 0;
|
const uint8_t enctoggle = 0;
|
||||||
|
const uint8_t mac[5] = {1,2,3,2,1};
|
||||||
|
|
||||||
uint32_t oid = 0;
|
uint32_t oid = 0;
|
||||||
uint32_t ctr = 0;
|
uint32_t ctr = 0;
|
||||||
uint8_t strength = 0;
|
uint8_t strength = 0;
|
||||||
|
|
||||||
void openbeaconSave()
|
void openbeaconSave()
|
||||||
{
|
{
|
||||||
|
FIL file;
|
||||||
|
BYTE buf[4];
|
||||||
|
UINT readbytes;
|
||||||
|
|
||||||
|
if( f_open(&file, "beacon", FA_OPEN_ALWAYS|FA_WRITE) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
uint32touint8p(ctr, buf);
|
||||||
|
|
||||||
|
if( f_write(&file, buf, 4, &readbytes) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
f_close(&file);
|
||||||
}
|
}
|
||||||
|
|
||||||
void openbeaconRead()
|
void openbeaconRead()
|
||||||
{
|
{
|
||||||
|
FIL file;
|
||||||
|
BYTE buf[4];
|
||||||
|
UINT readbytes;
|
||||||
|
|
||||||
|
if( f_open(&file, "beacon", FA_OPEN_EXISTING|FA_READ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( f_read(&file, buf, 4, &readbytes) )
|
||||||
|
return;
|
||||||
|
ctr = uint8ptouint32(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,13 +73,13 @@ void openbeaconSendPacket(uint32_t id, uint32_t ctr, uint8_t flags, uint8_t stre
|
||||||
|
|
||||||
void openbeaconSend(void)
|
void openbeaconSend(void)
|
||||||
{
|
{
|
||||||
//uint8_t tmp = nrfgetstrength();
|
nrf_set_strength(strength);
|
||||||
//nrfsetstrength(strength);
|
nrf_set_tx_mac(sizeof(mac), mac);
|
||||||
|
|
||||||
openbeaconSendPacket(oid, ctr++, 0xFF, strength++);
|
openbeaconSendPacket(oid, ctr++, 0xFF, strength++);
|
||||||
if( strength == 4 )
|
if( strength == 4 )
|
||||||
strength = 0;
|
strength = 0;
|
||||||
if( ctr % OPENBEACON_SAVECOUNTER == 0 )
|
if( ctr % OPENBEACON_SAVECOUNTER == 0 )
|
||||||
openbeaconSave();
|
openbeaconSave();
|
||||||
//maybe this produces timing problems?
|
|
||||||
//nrfsetstrength(tmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue