clean code, fix read rtc (TEST_RTC_DELTA)
This commit is contained in:
parent
6a28fd36e1
commit
a2f532f3a9
22 changed files with 16755 additions and 16734 deletions
|
|
@ -34,7 +34,8 @@ SRCS = $(addprefix $(SRC_PATH)/, $(SRC_PRJ))
|
|||
DEFINES = -D__GCC
|
||||
DEFINES += $(POJECT_DEF)
|
||||
DEFINES += -DDEBUG_INFO=0
|
||||
#DEFINES += -DMTU_SIZE=247
|
||||
DEFINES += -DMTU_SIZE=247
|
||||
DEFINES += -DTEST_RTC_DELTA=1
|
||||
DEFINES += -DCFG_SLEEP_MODE=PWR_MODE_SLEEP
|
||||
DEFINES += -DADV_NCONN_CFG=0x01
|
||||
DEFINES += -DADV_CONN_CFG=0x02
|
||||
|
|
|
|||
|
|
@ -561,7 +561,7 @@ static void hal_gpio_sleep_handler(void)
|
|||
static void hal_gpio_wakeup_handler(void)
|
||||
{
|
||||
int i;
|
||||
NVIC_SetPriority(GPIO_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority(GPIO_IRQn, IRQ_PRIO_APP); //IRQ_PRIO_HAL);
|
||||
NVIC_EnableIRQ(GPIO_IRQn);
|
||||
#ifdef XOSC_PIN_ALLOW
|
||||
|
||||
|
|
@ -699,7 +699,7 @@ int hal_gpio_init(void)
|
|||
//disable all wakeup pin
|
||||
AP_WAKEUP->io_wu_mask_31_0 = 0;
|
||||
AP_WAKEUP->io_wu_mask_34_32 = 0;
|
||||
NVIC_SetPriority(GPIO_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority(GPIO_IRQn, IRQ_PRIO_APP); // IRQ_PRIO_HAL);
|
||||
NVIC_EnableIRQ(GPIO_IRQn);
|
||||
#if(CFG_SLEEP_MODE == PWR_MODE_SLEEP)
|
||||
hal_pwrmgr_register(MOD_GPIO, hal_gpio_sleep_handler, hal_gpio_wakeup_handler);
|
||||
|
|
|
|||
|
|
@ -281,22 +281,6 @@ void clk_change_mod_restore(void)
|
|||
}
|
||||
|
||||
#if(CFG_SLEEP_MODE == PWR_MODE_SLEEP)
|
||||
void peripheral_interrupt_restore_default(void)
|
||||
{
|
||||
NVIC_SetPriority((IRQn_Type)KSCAN_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)WDT_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)UART0_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)UART1_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)I2C0_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)I2C1_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)SPI0_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)SPI1_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)GPIO_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)DMAC_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)TIM5_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)TIM6_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)ADCC_IRQn, IRQ_PRIO_HAL);
|
||||
}
|
||||
|
||||
int __attribute__((used)) hal_pwrmgr_wakeup_process(void)
|
||||
{
|
||||
|
|
@ -324,11 +308,11 @@ int __attribute__((used)) hal_pwrmgr_wakeup_process(void)
|
|||
NVIC_SetPriority((IRQn_Type)I2C1_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)SPI0_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)SPI1_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)GPIO_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)GPIO_IRQn, IRQ_PRIO_APP);
|
||||
NVIC_SetPriority((IRQn_Type)DMAC_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)TIM5_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)TIM6_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)ADCC_IRQn, IRQ_PRIO_HAL);
|
||||
NVIC_SetPriority((IRQn_Type)ADCC_IRQn, IRQ_PRIO_APP);
|
||||
|
||||
|
||||
for(i = 0; i< s_pwrmgr_cfg.moudle_num; i++)
|
||||
|
|
|
|||
|
|
@ -252,7 +252,13 @@ void config_RTC0(uint32 time)
|
|||
{
|
||||
// *((volatile uint32_t *)(0xe000e100)) |= INT_BIT_RTC; // remove, we don't use RTC interrupt
|
||||
// comparator configuration
|
||||
#if TEST_RTC_DELTA
|
||||
do
|
||||
sleep_tick = *(volatile uint32_t*) 0x4000f028; // read current RTC counter
|
||||
while(sleep_tick != *(volatile uint32_t*) 0x4000f028);
|
||||
#else
|
||||
sleep_tick = *(volatile uint32_t*) 0x4000f028; // read current RTC counter
|
||||
#endif
|
||||
//align to rtc clock edge
|
||||
WaitRTCCount(1);
|
||||
g_TIM2_IRQ_to_Sleep_DeltTick = (g_TIM2_IRQ_TIM3_CurrCount>(AP_TIM3->CurrentCount))
|
||||
|
|
|
|||
|
|
@ -5586,7 +5586,13 @@ void config_RTC1(uint32 time)
|
|||
//update for cal ll next time after wakeup
|
||||
ll_remain_time = read_LL_remainder_time();
|
||||
// comparator configuration
|
||||
#if TEST_RTC_DELTA
|
||||
do
|
||||
sleep_tick = *(volatile uint32_t*) 0x4000f028; // read current RTC counter
|
||||
while(sleep_tick != *(volatile uint32_t*) 0x4000f028);
|
||||
#else
|
||||
sleep_tick = *(volatile uint32_t*) 0x4000f028; // read current RTC counter
|
||||
#endif
|
||||
g_TIM2_IRQ_to_Sleep_DeltTick = (g_TIM2_IRQ_TIM3_CurrCount>(AP_TIM3->CurrentCount))
|
||||
? (g_TIM2_IRQ_TIM3_CurrCount-(AP_TIM3->CurrentCount)): 0;
|
||||
AP_AON->RTCCC0 = sleep_tick + time; //set RTC comparatr0 value
|
||||
|
|
@ -7672,7 +7678,7 @@ void init_config(void)
|
|||
if(g_clk32K_config == CLK_32K_XTAL)
|
||||
pGlobal_config[LL_SWITCH] &= 0xffffffee;
|
||||
else
|
||||
pGlobal_config[LL_SWITCH] |= RC32_TRACKINK_ALLOW | LL_RC32K_SEL;
|
||||
pGlobal_config[LL_SWITCH] |= LL_RC32K_SEL | RC32_TRACKINK_ALLOW; // TODO: RTC 32000 Hz or 32768 Hz ?
|
||||
|
||||
// sleep delay
|
||||
pGlobal_config[MIN_TIME_TO_STABLE_32KHZ_XOSC] = 10; // 10ms, temporary set
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -138,8 +138,7 @@ int cmd_parser(uint8_t * obuf, uint8_t * ibuf, uint32_t len) {
|
|||
obuf[1] = wrk.reboot;
|
||||
olen = 2;
|
||||
} else if (cmd == CMD_ID_MEASURE) {
|
||||
memcpy(&obuf[1], &measured_data, send_len_measured_data);
|
||||
olen = 1 + send_len_measured_data;
|
||||
olen = make_measure_msg(obuf);
|
||||
#if (DEV_SERVICES & SERVICE_SCREEN)
|
||||
} else if (cmd == CMD_ID_LCD_DUMP) { // Get/set lcd buf
|
||||
if (--len > sizeof(display_buff))
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@
|
|||
//#define LED_OFF 0
|
||||
|
||||
#define DEF_MODEL_NUMBER_STR "TH05"
|
||||
#define DEF_HARDWARE_REVISION "0001"
|
||||
#define DEF_HARDWARE_REVISION "0014"
|
||||
#define DEF_MANUFACTURE_NAME_STR "Tuya"
|
||||
|
||||
#else
|
||||
|
|
@ -259,7 +259,12 @@ extern work_parm_t wrk;
|
|||
#if 1
|
||||
#define clock_time_rtc() rtc_get_counter()
|
||||
#else
|
||||
inline uint32 clock_time_rtc(void) { return AP_AON->RTCCNT; } // (*(volatile unsigned int*)0x4000f028); }// & 0xffffff; // max 512 sec
|
||||
inline uint32 clock_time_rtc(void) {
|
||||
uint32_t tick;
|
||||
do
|
||||
tick = *(volatile uint32_t*) 0x4000f028; // read current RTC counter (AP_AON->RTCCNT)
|
||||
while(tick != *(volatile uint32_t*) 0x4000f028;) // AP_AON->RTCCNT
|
||||
return tick; } // (*(volatile unsigned int*)0x4000f028); }// & 0xffffff; // max 512 sec
|
||||
#endif
|
||||
// uint32_t get_delta_time_rtc(uint32_t start_time_rtc);
|
||||
|
||||
|
|
|
|||
|
|
@ -466,6 +466,24 @@ void new_ota_data(void) {
|
|||
}
|
||||
#endif
|
||||
|
||||
uint16_t make_measure_msg(uint8_t *pbuf) {
|
||||
pbuf[0] = CMD_ID_MEASURE;
|
||||
memcpy(&pbuf[1], &measured_data, send_len_measured_data);
|
||||
pbuf[send_len_measured_data + 1] = clkt.utc_time_sec & 0xff;
|
||||
pbuf[send_len_measured_data + 2] = (clkt.utc_time_sec >> 8) & 0xff;
|
||||
pbuf[send_len_measured_data + 3] = (clkt.utc_time_sec >> 16) & 0xff;
|
||||
pbuf[send_len_measured_data + 4] = (clkt.utc_time_sec >> 24) & 0xff;
|
||||
#if (DEV_SERVICES & SERVICE_RDS)
|
||||
pbuf[send_len_measured_data + 5] = adv_wrk.rds_count & 0xff;
|
||||
pbuf[send_len_measured_data + 6] = (adv_wrk.rds_count >> 8) & 0xff;
|
||||
pbuf[send_len_measured_data + 7] = (adv_wrk.rds_count >> 16) & 0xff;
|
||||
pbuf[send_len_measured_data + 8] = (adv_wrk.rds_count >> 24) & 0xff;
|
||||
return send_len_measured_data + 1 + 4 + 4;
|
||||
#else
|
||||
return send_len_measured_data + 1 + 4;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void measureNotifyCB( linkDBItem_t* pLinkItem )
|
||||
{
|
||||
if ( pLinkItem->stateFlags & LINK_CONNECTED )
|
||||
|
|
@ -477,23 +495,7 @@ static void measureNotifyCB( linkDBItem_t* pLinkItem )
|
|||
{
|
||||
attHandleValueNoti_t noti;
|
||||
noti.handle = simpleProfileAttrTbl[CDM_DATA_ATTR_IDX].handle;;
|
||||
#if (DEV_SERVICES & SERVICE_RDS)
|
||||
noti.len = send_len_measured_data + 1 + 4 + 4;
|
||||
#else
|
||||
noti.len = send_len_measured_data + 1 + 4;
|
||||
#endif
|
||||
noti.value[0] = CMD_ID_MEASURE;
|
||||
memcpy(¬i.value[1], &measured_data, send_len_measured_data);
|
||||
noti.value[send_len_measured_data + 1] = clkt.utc_time_sec & 0xff;
|
||||
noti.value[send_len_measured_data + 2] = (clkt.utc_time_sec >> 8) & 0xff;
|
||||
noti.value[send_len_measured_data + 3] = (clkt.utc_time_sec >> 16) & 0xff;
|
||||
noti.value[send_len_measured_data + 4] = (clkt.utc_time_sec >> 24) & 0xff;
|
||||
#if (DEV_SERVICES & SERVICE_RDS)
|
||||
noti.value[send_len_measured_data + 5] = adv_wrk.rds_count & 0xff;
|
||||
noti.value[send_len_measured_data + 6] = (adv_wrk.rds_count >> 8) & 0xff;
|
||||
noti.value[send_len_measured_data + 7] = (adv_wrk.rds_count >> 16) & 0xff;
|
||||
noti.value[send_len_measured_data + 8] = (adv_wrk.rds_count >> 24) & 0xff;
|
||||
#endif
|
||||
noti.len = make_measure_msg(noti.value);
|
||||
GATT_Notification( pLinkItem->connectionHandle, ¬i, FALSE );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ void new_cmd_data(void);
|
|||
void new_ota_data(void);
|
||||
void wrk_notify(void);
|
||||
void measure_notify(void);
|
||||
uint16_t make_measure_msg(uint8_t *pbuf);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1316,17 +1316,11 @@ function parseBlkCustom(value) {
|
|||
let pbat = value.getUint8(9);
|
||||
let flg = 0;
|
||||
let rds_count = 0;
|
||||
let delta = 0;
|
||||
let s = 'Температура: ' + temp.toFixed(2) + '°C'
|
||||
+ ', Влажность: ' + humi.toFixed(2) + '%'
|
||||
+ ', Vbat: ' + vbat + ' мВ'
|
||||
+ ', ID: ' + count;
|
||||
if(len > 12) {
|
||||
flg = value.getUint8(9);
|
||||
rds_count = value.getUint32(10, true);
|
||||
s += ', счетчик срабатываний: '+ rds_count
|
||||
+ ', флаги: 0x' + hex(flg,2) + ':r' + (flg&1) + '/t' + ((flg>>1)&1);
|
||||
}
|
||||
console.log(s);
|
||||
$('lblTemp').innerHTML = temp + ' °C';
|
||||
$('lblHumi').innerHTML = humi + ' %RH';
|
||||
$('lblBat').innerHTML = pbat + ' % (' + vbat / 1000 + ' V)';
|
||||
|
|
@ -1334,29 +1328,27 @@ function parseBlkCustom(value) {
|
|||
if(len > 10) {
|
||||
flg = value.getUint8(10);
|
||||
s += ", флаги: 0x" + hex(flg,2);
|
||||
|
||||
so = "In: " + (flg&1)
|
||||
+ ", Out: " + ((flg&2)? 1:0)
|
||||
+ ", Cmf: " + ((flg&4)? 1:0)
|
||||
+ ", Te: " + ((flg&16)? 1:0)
|
||||
+ ", He: " + ((flg&32)? 1:0);
|
||||
}
|
||||
if(len > 14) {
|
||||
devTime.cur = value.getUint32(11,true);
|
||||
//console.log('Device Time: 0x' + hex(devtime.cur, 8));
|
||||
let dt = new Date(devTime.cur * 1000);
|
||||
let sDateTime = (dt.toISOString().slice(0, -5)).replace('T',' ');
|
||||
$('lblTime').innerHTML = sDateTime;
|
||||
let time = Date.now() / 1000 - (new Date()).getTimezoneOffset() * 60;
|
||||
let delta = devTime.cur - time;
|
||||
console.log('Время на устройстве: ' + sDateTime + ', Уход: ' + Math.round(delta) + ' сек');
|
||||
$('lbDeltaTime').innerHTML = 'Уход часов: ' + Math.round(delta) + ' сек';
|
||||
if(len > 18) {
|
||||
rds_count = value.getUint32(15,true);
|
||||
s += ", rds: " + rds_count;
|
||||
so += ", rds: " + rds_count;
|
||||
if(len > 14) {
|
||||
devTime.cur = value.getUint32(11,true);
|
||||
//console.log('Device Time: 0x' + hex(devtime.cur, 8));
|
||||
let dt = new Date(devTime.cur * 1000);
|
||||
let sDateTime = (dt.toISOString().slice(0, -5)).replace('T',' ');
|
||||
$('lblTime').innerHTML = sDateTime;
|
||||
let time = Date.now() / 1000 - (new Date()).getTimezoneOffset() * 60;
|
||||
let delta = devTime.cur - time;
|
||||
console.log('Время на устройстве: ' + sDateTime + ', Уход: ' + Math.round(delta) + ' сек');
|
||||
$('lbDeltaTime').innerHTML = 'Уход часов: ' + Math.round(delta) + ' сек';
|
||||
if(len > 18) {
|
||||
rds_count = value.getUint32(15,true);
|
||||
s += ", rds: " + rds_count;
|
||||
so += ", rds: " + rds_count;
|
||||
}
|
||||
}
|
||||
// if(delta > 10 || delta < -10) setDevTime();
|
||||
}
|
||||
$('lblTrg').innerHTML = so;
|
||||
console.log(s);
|
||||
|
|
@ -1371,7 +1363,12 @@ function parseBlkCustom(value) {
|
|||
}
|
||||
}
|
||||
);
|
||||
if(len < 15) getDevTime();
|
||||
if(len < 15) getDevTime();
|
||||
if(delta > 10800 || delta < -10800) {
|
||||
addLog("Авто установка часов устройства...");
|
||||
setDevTime();
|
||||
}
|
||||
|
||||
} else if((blkId == 0x25 || blkId == 0x26) && (len > 12)) {
|
||||
// CMD_ID_CFS Get/Set sensor config
|
||||
devSens.temp_k = value.getUint32(1, true);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue