Skip to content

Commit 9afeae0

Browse files
committed
Cleaning and add config support for sigfox
1 parent bd24d19 commit 9afeae0

File tree

4 files changed

+173
-20
lines changed

4 files changed

+173
-20
lines changed

Src/drivers/sx1276/sigfox_lib_api.c

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,6 @@ sfx_u8 MCU_API_get_voltage_temperature(sfx_u16 *voltage_idle, sfx_u16 *voltage_t
113113
/**
114114
* Wait for the given delay_type..
115115
*/
116-
// Let see if the use of sTimer is better for log wait ... later
117-
//static void OnTimerDelayEvt( void ) {
118-
// LOG_DEBUG_SFXSX1276((">> OnTimerDelayEvt\r\n"));
119-
// SCH_SetEvt( DELAY_EVT );
120-
//}
121116
#warning "We could optimize long stop with going to sleep..."
122117
sfx_u8 MCU_API_delay(sfx_delay_t delay_type)
123118
{
@@ -162,7 +157,6 @@ sfx_u8 MCU_API_delay(sfx_delay_t delay_type)
162157
err = MCU_ERR_API_DLY;
163158
break;
164159
}
165-
//SCH_SetEvt( DELAY_EVT );
166160
return err;
167161
}
168162

@@ -183,8 +177,7 @@ sfx_u8 MCU_API_get_nv_mem(sfx_u8 read_data[SFX_NVMEM_BLOCK_SIZE])
183177
_eeprom_read(ITDT_EEPROM_BANK0, offset, (void *) tab, sz);
184178
bcopy(tab,read_data,SFX_NVMEM_BLOCK_SIZE);
185179

186-
#warning to_remove
187-
log_info_array("MCU_NVM",read_data,SFX_NVMEM_BLOCK_SIZE);
180+
//log_info_array("MCU_NVM",read_data,SFX_NVMEM_BLOCK_SIZE);
188181

189182
return SFX_ERR_NONE;
190183
}
@@ -195,8 +188,7 @@ sfx_u8 MCU_API_get_nv_mem(sfx_u8 read_data[SFX_NVMEM_BLOCK_SIZE])
195188
sfx_u8 MCU_API_set_nv_mem(sfx_u8 data_to_write[SFX_NVMEM_BLOCK_SIZE])
196189
{
197190
LOG_DEBUG_SFXSX1276((">> MCU_API_set_nv_mem\r\n"));
198-
#warning to_remove
199-
log_info_array("MCU_NVM",data_to_write,SFX_NVMEM_BLOCK_SIZE);
191+
//log_info_array("MCU_NVM",data_to_write,SFX_NVMEM_BLOCK_SIZE);
200192

201193

202194
uint32_t offset;
@@ -586,8 +578,7 @@ sfx_u8 SE_NVM_get(sfx_u8 read_data[SFX_SE_NVMEM_BLOCK_SIZE])
586578
_eeprom_read(ITDT_EEPROM_BANK0, offset, (void *) tab, sz);
587579
bcopy(tab,read_data,SFX_SE_NVMEM_BLOCK_SIZE);
588580

589-
#warning to_remove
590-
log_info_array("SE_NVM",read_data,SFX_SE_NVMEM_BLOCK_SIZE);
581+
//log_info_array("SE_NVM",read_data,SFX_SE_NVMEM_BLOCK_SIZE);
591582

592583
return SFX_ERR_NONE;
593584
}
@@ -599,8 +590,8 @@ sfx_u8 SE_NVM_get(sfx_u8 read_data[SFX_SE_NVMEM_BLOCK_SIZE])
599590
sfx_u8 SE_NVM_set(sfx_u8 data_to_write[SFX_SE_NVMEM_BLOCK_SIZE])
600591
{
601592
LOG_DEBUG_SFXSX1276((">> SE_NVM_set\r\n"));
602-
#warning to_remove
603-
log_info_array("SE_NVM",data_to_write,SFX_SE_NVMEM_BLOCK_SIZE);
593+
594+
//log_info_array("SE_NVM",data_to_write,SFX_SE_NVMEM_BLOCK_SIZE);
604595

605596
uint32_t offset;
606597
itsdk_sigfox_getSeNvmOffset(&offset);

Src/drivers/sx1276/sigfox_sx1276.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include <it_sdk/eeprom/sdk_state.h>
3333
#include <it_sdk/time/timer.h>
3434
#include <drivers/sigfox/sigfox_api.h>
35+
#include <drivers/sigfox/se_nvm.h>
3536
#include <drivers/sx1276/sigfox_sx1276.h>
3637
#include <drivers/sx1276/sx1276.h>
3738

@@ -139,10 +140,10 @@ sx1276_sigfox_ret_t sx1276_sigfox_setPower( uint8_t power ) {
139140
*/
140141
sx1276_sigfox_ret_t sx1276_sigfox_getSeqId( uint16_t * seqId ) {
141142
LOG_INFO_SFXSX1276((">> sx1276_sigfox_getSeqId\r\n"));
142-
143-
#warning "TO BE COMPLETED"
144-
*seqId = 0;
145-
return SX1276_SIGFOX_ERR_NONE;
143+
sfx_u8 read_data[SFX_SE_NVMEM_BLOCK_SIZE];
144+
SE_NVM_get(read_data);
145+
*seqId = (read_data[SE_NVMEM_SEQNUM]+(read_data[SE_NVMEM_SEQNUM+1] << 8)) & 0xFFF;
146+
return SX1276_SIGFOX_ERR_NONE;
146147
}
147148

148149
/**

Src/it_sdk/eeprom/sdk_config.c

Lines changed: 162 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,17 @@ itsdk_config_ret_e itsdk_config_commitConfiguration(itsdk_config_commit_mode_e m
242242
// ====================================================================================================
243243
// CONSOLE PART
244244
// ====================================================================================================
245-
245+
static bool __checkAndConvert(char * str,uint8_t start,uint8_t stop,uint8_t sz,uint8_t * buf) {
246+
if ( (stop - start) < 2*sz ) return false;
247+
int k = 0;
248+
for ( int i = start ; i < stop ; i+=2 ) {
249+
if ( itdt_isHexChar(str[i],false) && itdt_isHexChar(str[i+1],false) ) {
250+
buf[k] = itdt_convertHexChar2Int(&str[i]);
251+
k++;
252+
} else return false;
253+
}
254+
return true;
255+
}
246256

247257
#if ITSDK_WITH_CONSOLE == __ENABLE
248258

@@ -295,6 +305,28 @@ itsdk_config_ret_e itsdk_config_commitConfiguration(itsdk_config_commit_mode_e m
295305
_itsdk_console_printf("sdk.lora.networkType : %d\r\n",_c->sdk.lorawan.networkType);
296306
_itsdk_console_printf("sdk.lora.retries : %d\r\n",_c->sdk.lorawan.retries);
297307
#endif
308+
309+
#if ITSDK_WITH_SIGFOX_LIB == __ENABLE
310+
_itsdk_console_printf("sdk.sigfox.rssiCal : %d\r\n",_c->sdk.sigfox.rssiCal);
311+
_itsdk_console_printf("sdk.sigfox.txPower : %ddB\r\n",_c->sdk.sigfox.txPower);
312+
_itsdk_console_printf("sdk.sigfox.speed : %dbps\r\n",_c->sdk.sigfox.speed);
313+
_itsdk_console_printf("sdk.sigfox.rcz : %d\r\n",_c->sdk.sigfox.rcz);
314+
_itsdk_console_printf("sdk.sigfox.sgfxKey : %d\r\n",_c->sdk.sigfox.sgfxKey);
315+
#if ITSDK_SIGFOX_NVM_SOURCE == __SFX_NVM_LOCALEPROM
316+
_itsdk_console_printf("sdk.sigfox.initialPac : [%02X%02X%02X%02X%02X%02X%02X%02X]\r\n",
317+
_c->sdk.sigfox.initialPac[0],
318+
_c->sdk.sigfox.initialPac[1],
319+
_c->sdk.sigfox.initialPac[2],
320+
_c->sdk.sigfox.initialPac[3],
321+
_c->sdk.sigfox.initialPac[4],
322+
_c->sdk.sigfox.initialPac[5],
323+
_c->sdk.sigfox.initialPac[6],
324+
_c->sdk.sigfox.initialPac[7]
325+
);
326+
_itsdk_console_printf("sdk.sigfox.deviceId : %08X \r\n",_c->sdk.sigfox.deviceId);
327+
#endif
328+
#endif
329+
298330
#if ITSDK_WITH_CONFIGURATION_APP == __ENABLE
299331
itsdk_config_app_printConfig(_c);
300332
#endif
@@ -327,6 +359,14 @@ static itsdk_console_return_e _itsdk_config_consolePriv(char * buffer, uint8_t s
327359
_itsdk_console_printf("SC:3:x : lora.networkType 1:PUBLIC/2:PRIVATE\r\n");
328360
_itsdk_console_printf("SC:4:nn : lora.retries 00..99\r\n");
329361
#endif
362+
#if ITSDK_WITH_SIGFOX_LIB == __ENABLE
363+
_itsdk_console_printf("SC:8:xx : sigfox.txPower 00-22dB (decimal) 99 (default)\r\n");
364+
_itsdk_console_printf("SC:9:xx : sigfox.speed 0(default)/100/600bps (decimal)\r\n");
365+
_itsdk_console_printf("SC:A:xx : sigfox.rcz [01,02,3c,04,05]\r\n");
366+
_itsdk_console_printf("SC:B:x : sigfox.sgfxKey 0:PRIVATE 1:PUBLIC\r\n");
367+
_itsdk_console_printf("SC:C:8hex : sigfox.initialPac 8B hex string\r\n");
368+
_itsdk_console_printf("SC:D:4hex : sigfox.deviceId 4B hex string\r\n");
369+
#endif
330370
return ITSDK_CONSOLE_SUCCES;
331371
break;
332372
#if ITSDK_CONFIGURATION_MODE != __CONFIG_STATIC
@@ -433,6 +473,127 @@ static itsdk_console_return_e _itsdk_config_consolePriv(char * buffer, uint8_t s
433473
return ITSDK_CONSOLE_FAILED;
434474
break;
435475
#endif
476+
#if ITSDK_WITH_SIGFOX_LIB == __ENABLE
477+
case '8':
478+
// sigfox.txPower
479+
if ( sz >= 7 ) {
480+
int v = 0;
481+
char c = buffer[5];
482+
if ( c >= '0' && c <= '9' ) {
483+
v = 10*(c - '0');
484+
c = buffer[6];
485+
if ( c >= '0' && c <= '9' ) {
486+
v = v + (c - '0');
487+
} else v = -1;
488+
} else v = -1;
489+
if ( v >= 0 && v < 24 ) {
490+
itsdk_config_shadow.sdk.sigfox.txPower = v;
491+
_itsdk_console_printf("OK\r\n");
492+
return ITSDK_CONSOLE_SUCCES;
493+
}
494+
if ( v == 99 ) {
495+
itsdk_config_shadow.sdk.sigfox.txPower = SIGFOX_DEFAULT_POWER;
496+
_itsdk_console_printf("OK\r\n");
497+
return ITSDK_CONSOLE_SUCCES;
498+
}
499+
}
500+
_itsdk_console_printf("KO\r\n");
501+
return ITSDK_CONSOLE_FAILED;
502+
break;
503+
case '9':
504+
// sigfox.speed
505+
if ( sz >= 8 ) {
506+
if ( buffer[6] == '0' && buffer[7] == '0' ) {
507+
if ( buffer[5] == '1') {
508+
itsdk_config_shadow.sdk.sigfox.speed = SIGFOX_SPEED_100;
509+
_itsdk_console_printf("OK\r\n");
510+
return ITSDK_CONSOLE_SUCCES;
511+
} else if ( buffer[5] == '6' ) {
512+
itsdk_config_shadow.sdk.sigfox.speed = SIGFOX_SPEED_600;
513+
_itsdk_console_printf("OK\r\n");
514+
return ITSDK_CONSOLE_SUCCES;
515+
} else if ( buffer[5] == '0' ) {
516+
itsdk_config_shadow.sdk.sigfox.speed = SIGFOX_DEFAULT_SPEED;
517+
_itsdk_console_printf("OK\r\n");
518+
return ITSDK_CONSOLE_SUCCES;
519+
}
520+
}
521+
}
522+
_itsdk_console_printf("KO\r\n");
523+
return ITSDK_CONSOLE_FAILED;
524+
break;
525+
case 'A':
526+
if ( sz >= 7 ) {
527+
if ( buffer[5] == '0' && buffer[6] == '1' ) {
528+
itsdk_config_shadow.sdk.sigfox.rcz = SIGFOX_RCZ1;
529+
_itsdk_console_printf("OK\r\n");
530+
return ITSDK_CONSOLE_SUCCES;
531+
}
532+
if ( buffer[5] == '0' && buffer[6] == '2' ) {
533+
itsdk_config_shadow.sdk.sigfox.rcz = SIGFOX_RCZ2;
534+
_itsdk_console_printf("OK\r\n");
535+
return ITSDK_CONSOLE_SUCCES;
536+
}
537+
if ( buffer[5] == '3' && buffer[6] == 'c' ) {
538+
itsdk_config_shadow.sdk.sigfox.rcz = SIGFOX_RCZ3C;
539+
_itsdk_console_printf("OK\r\n");
540+
return ITSDK_CONSOLE_SUCCES;
541+
}
542+
if ( buffer[5] == '0' && buffer[6] == '4' ) {
543+
itsdk_config_shadow.sdk.sigfox.rcz = SIGFOX_RCZ4;
544+
_itsdk_console_printf("OK\r\n");
545+
return ITSDK_CONSOLE_SUCCES;
546+
}
547+
if ( buffer[5] == '0' && buffer[6] == '5' ) {
548+
itsdk_config_shadow.sdk.sigfox.rcz = SIGFOX_RCZ5;
549+
_itsdk_console_printf("OK\r\n");
550+
return ITSDK_CONSOLE_SUCCES;
551+
}
552+
}
553+
_itsdk_console_printf("KO\r\n");
554+
return ITSDK_CONSOLE_FAILED;
555+
break;
556+
case 'B':
557+
if ( sz >= 6) {
558+
if ( buffer[5] == '0' ) {
559+
itsdk_config_shadow.sdk.sigfox.sgfxKey = SIGFOX_KEY_PRIVATE;
560+
_itsdk_console_printf("OK\r\n");
561+
return ITSDK_CONSOLE_SUCCES;
562+
}
563+
if ( buffer[5] == '1' ) {
564+
itsdk_config_shadow.sdk.sigfox.sgfxKey = SIGFOX_KEY_PUBLIC;
565+
_itsdk_console_printf("OK\r\n");
566+
return ITSDK_CONSOLE_SUCCES;
567+
}
568+
}
569+
_itsdk_console_printf("KO\r\n");
570+
return ITSDK_CONSOLE_FAILED;
571+
break;
572+
case 'C':
573+
{
574+
uint8_t b[8];
575+
if ( __checkAndConvert(buffer,5,sz,8,b) ) {
576+
bcopy(b,itsdk_config_shadow.sdk.sigfox.initialPac,8);
577+
_itsdk_console_printf("OK\r\n");
578+
return ITSDK_CONSOLE_SUCCES;
579+
}
580+
_itsdk_console_printf("KO\r\n");
581+
return ITSDK_CONSOLE_FAILED;
582+
}
583+
break;
584+
case 'D':
585+
{
586+
uint8_t b[4];
587+
if ( __checkAndConvert(buffer,5,sz,4,b) ) {
588+
bcopy(b,itsdk_config_shadow.sdk.sigfox.deviceId,4);
589+
_itsdk_console_printf("OK\r\n");
590+
return ITSDK_CONSOLE_SUCCES;
591+
}
592+
_itsdk_console_printf("KO\r\n");
593+
return ITSDK_CONSOLE_FAILED;
594+
}
595+
break;
596+
#endif // ITSDK_WITH_SIGFOX_LIB
436597
default:
437598
break;
438599
}

Src/it_sdk/sigfox/sigfox.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ itsdk_sigfox_init_t itsdk_sigfox_getSeNvmOffset(uint32_t * offset) {
649649
itsdk_sigfox_init_t __itsdk_sigfox_resetNvmToFactory() {
650650
LOG_INFO_SIGFOXSTK(("__itsdk_sigfox_resetNvmToFactory\r\n"));
651651

652-
uint8_t se_nvm_default[SFX_SE_NVMEM_BLOCK_SIZE] = { 0xFF, 0, 0, 0x0F, 0xFF };
652+
uint8_t se_nvm_default[SFX_SE_NVMEM_BLOCK_SIZE] = { 0, 0, 0, 0x0F, 0xFF };
653653
SE_NVM_set(se_nvm_default);
654654
uint8_t se_mcu_default[SFX_NVMEM_BLOCK_SIZE];
655655
bzero(se_mcu_default,SFX_NVMEM_BLOCK_SIZE);

0 commit comments

Comments
 (0)