Skip to content
This repository was archived by the owner on Apr 8, 2025. It is now read-only.

Commit e63e1cb

Browse files
committed
Some major fixes:
1. Fixed a call detecting mechanism, which led to a call cliff during a conversation or opening the door, which sometimes prevented open the door. (In some cases, it did not open at all) 2. In battery mode, the sleep mode is fixed - it is now possible to open the door. 3. In the battery mode, change the sound mode by the button is disabled, because 'no sound' mode on the battery is in development.
1 parent 06b4283 commit e63e1cb

File tree

2 files changed

+39
-34
lines changed

2 files changed

+39
-34
lines changed

Source/preinclude.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
#define HAL_KEY_P0_INPUT_PINS_EDGE HAL_KEY_RISING_EDGE
4747
#define HAL_KEY_P2_INPUT_PINS BV(0)
4848
#define HAL_KEY_P2_INPUT_PINS_EDGE HAL_KEY_FALLING_EDGE
49-
#define INT_HEAP_LEN 2256
49+
#define INT_HEAP_LEN 2200//2256
5050
#elif defined( HAL_BOARD_CHDTECH_DEV )
5151
#define HAL_KEY_P0_INPUT_PINS BV(1)
5252
#define HAL_KEY_P0_INPUT_PINS_EDGE HAL_KEY_FALLING_EDGE

Source/zcl_app.c

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ void zclApp_Init(byte task_id) {
121121
LREP("Build %s \r\n", zclApp_DateCodeNT);
122122

123123
zclApp_ConfigInit(TIMER_START);
124+
124125
IO_IMODE_PORT_PIN(0,0,IO_TRI);
125126

126127
#if defined( ZIC_BATTERY_MODE )
@@ -136,20 +137,23 @@ static void zclApp_HandleKeys(byte portAndAction, byte keyCode) {
136137

137138
if (portAndAction & 0x01) { //P0 Ring //S1 P0_1
138139

139-
//exit old stop timer
140-
osal_stop_timerEx(zclApp_TaskID, APP_RING_STOP_EVT);
141-
osal_clear_event(zclApp_TaskID, APP_RING_STOP_EVT);
142-
//start new stop timer (ring ends timer)
143-
osal_start_reload_timer(zclApp_TaskID, APP_RING_STOP_EVT, 3000);
140+
144141

145142
if (portAndAction & HAL_KEY_PRESS) {
146-
//osal_pwrmgr_task_state(zclApp_TaskID, PWRMGR_HOLD);
147-
//osal_pwrmgr_task_state(Hal_TaskID, PWRMGR_CONSERVE);
143+
144+
//exit old stop timer
145+
osal_stop_timerEx(zclApp_TaskID, APP_RING_STOP_EVT);
146+
//osal_clear_event(zclApp_TaskID, APP_RING_STOP_EVT);
147+
//start new stop timer (ring ends timer)
148+
osal_start_timerEx(zclApp_TaskID, APP_RING_STOP_EVT, 3000);
148149

149150
//start ring
150151
if (zclApp_State.RingRunStep == 0) {
152+
#if defined( ZIC_BATTERY_MODE )
153+
osal_pwrmgr_task_state(zclApp_TaskID, PWRMGR_HOLD);
154+
#endif
151155
LREPMaster("Ring start\r\n");
152-
HalLedSet(LED_PIN, HAL_LED_MODE_BLINK);
156+
//HalLedSet(LED_PIN, HAL_LED_MODE_BLINK);
153157
zclApp_State.RingRunStep = 1;
154158
osal_start_reload_timer(zclApp_TaskID, APP_RING_RUN_EVT, 500);
155159
afAddrType_t inderect_DstAddr = {.addrMode = (afAddrMode_t)AddrNotPresent, .endPoint = 0, .addr.shortAddr = 0};
@@ -258,10 +262,12 @@ uint16 zclApp_event_loop(uint8 task_id, uint16 events) {
258262

259263

260264
static void zclApp_RingRun(void) {
261-
262265
zclApp_State.RingRunStep++;
263266
LREP("zclApp_State.RingRunStep %d\r\n", zclApp_State.RingRunStep);
264267
LREP("zclApp_State.State %d\r\n", zclApp_State.State);
268+
269+
270+
265271
switch (zclApp_State.State) {
266272
case Idle:
267273
zclApp_State.State = Ring;
@@ -280,6 +286,7 @@ static void zclApp_RingRun(void) {
280286
}
281287
break;
282288
case Talk:
289+
osal_stop_timerEx(zclApp_TaskID, APP_RING_STOP_EVT);
283290
if ((zclApp_Config.ModeOpen == Once) || (zclApp_Config.ModeOpen == Always)){
284291
if (zclApp_State.RingRunStep > ((zclApp_Config.TimeRing + zclApp_Config.TimeTalk) * 2)) {
285292
zclApp_State.State = Open;
@@ -289,6 +296,7 @@ static void zclApp_RingRun(void) {
289296
}
290297
break;
291298
case Open:
299+
osal_stop_timerEx(zclApp_TaskID, APP_RING_STOP_EVT);
292300
if ((zclApp_Config.ModeOpen == Once) || (zclApp_Config.ModeOpen == Always)){
293301
if (zclApp_State.RingRunStep > ((zclApp_Config.TimeRing + zclApp_Config.TimeTalk + zclApp_Config.TimeOpen) * 2)) {
294302
zclApp_RingEnd();
@@ -307,7 +315,7 @@ static void zclApp_RingRun(void) {
307315
static void zclApp_TalkStart(void) {
308316
LREPMaster("Talk start\r\n");
309317
osal_stop_timerEx(zclApp_TaskID, APP_RING_STOP_EVT);
310-
osal_clear_event(zclApp_TaskID, APP_RING_STOP_EVT);
318+
//osal_clear_event(zclApp_TaskID, APP_RING_STOP_EVT);
311319
zclApp_OneReport();
312320
HalLedSet(ANSWER_PIN, HAL_LED_MODE_ON);
313321
if (zclApp_Config.ModeSound == true) {
@@ -320,30 +328,27 @@ static void zclApp_TalkStart(void) {
320328

321329
static void zclApp_RingEnd(void) {
322330
LREPMaster("Ring end\r\n");
323-
if (zclApp_Config.ModeSound == true) {
324-
HalLedSet(CATCH_PIN, HAL_LED_MODE_OFF);
325-
HalLedSet(HANDSET_PIN, HAL_LED_MODE_OFF);
326-
}
327-
else {
328-
HalLedSet(CATCH_PIN, HAL_LED_MODE_ON);
329-
HalLedSet(HANDSET_PIN, HAL_LED_MODE_ON);
330-
}
331+
HalLedSet(CATCH_PIN, !zclApp_Config.ModeSound);
332+
HalLedSet(HANDSET_PIN, !zclApp_Config.ModeSound);
331333
HalLedSet(ANSWER_PIN, HAL_LED_MODE_OFF);
332334
osal_stop_timerEx(zclApp_TaskID, APP_RING_RUN_EVT);
333335
osal_clear_event(zclApp_TaskID, APP_RING_RUN_EVT);
334336
osal_stop_timerEx(zclApp_TaskID, APP_RING_STOP_EVT);
335-
osal_clear_event(zclApp_TaskID, APP_RING_STOP_EVT);
337+
//osal_clear_event(zclApp_TaskID, APP_RING_STOP_EVT);
336338
zclApp_State.RingRunStep = 0;
337339
zclApp_State.State = Idle;
338-
afAddrType_t inderect_DstAddr = {.addrMode = (afAddrMode_t)AddrNotPresent, .endPoint = 0, .addr.shortAddr = 0};
339-
340+
341+
afAddrType_t inderect_DstAddr = {.addrMode = (afAddrMode_t)AddrNotPresent, .endPoint = 0, .addr.shortAddr = 0};
340342
zclGeneral_SendOnOff_CmdOff(zclApp_FirstEP.EndPoint, &inderect_DstAddr, FALSE, bdb_getZCLFrameCounter());
343+
341344
if (zclApp_Config.ModeOpen == Once) {
342345
zclApp_Config.ModeOpen = Never;
343346
}
344347
zclApp_OneReport();
348+
345349
#if defined( ZIC_BATTERY_MODE )
346350
zclBattery_Report();
351+
osal_pwrmgr_task_state(zclApp_TaskID, PWRMGR_CONSERVE);
347352
#endif
348353
}
349354

@@ -354,8 +359,11 @@ static void zclApp_BtnClick(bool hold) {
354359
switch (currentBtnClickPhase++) {
355360
case 0:
356361
if (hold) {
357-
zclApp_Config.ModeSound = !zclApp_Config.ModeSound;
358-
HalLedSet(CATCH_PIN, !zclApp_Config.ModeSound);
362+
#if !defined( ZIC_BATTERY_MODE )
363+
zclApp_Config.ModeSound = !zclApp_Config.ModeSound;
364+
HalLedSet(HANDSET_PIN, !zclApp_Config.ModeSound);
365+
HalLedSet(CATCH_PIN, !zclApp_Config.ModeSound);
366+
#endif
359367
}
360368
else {
361369
if (zclApp_Config.ModeOpen < Drop) {
@@ -399,7 +407,10 @@ static void zclApp_OneReport(void) {
399407
HalLedSet(LED_PIN, HAL_LED_MODE_BLINK);
400408
bdb_RepChangedAttrValue(zclApp_FirstEP.EndPoint, ZCL_INTERCOM, ATTRID_STATE);
401409
bdb_RepChangedAttrValue(zclApp_FirstEP.EndPoint, ZCL_INTERCOM, ATTRID_MODEOPEN);
402-
bdb_RepChangedAttrValue(zclApp_FirstEP.EndPoint, ZCL_INTERCOM, ATTRID_MODESOUND);
410+
#if !defined( ZIC_BATTERY_MODE )
411+
bdb_RepChangedAttrValue(zclApp_FirstEP.EndPoint, ZCL_INTERCOM, ATTRID_MODESOUND);
412+
#endif
413+
403414
}
404415

405416
static void zclApp_BasicResetCB(void) {
@@ -428,15 +439,9 @@ static void zclApp_ConfigInit(bool restart) {
428439
uint32 ReportInterval = (uint32)zclApp_Config.TimeReport * (uint32)60;
429440
LREP("Start report with interval %d seconds\r\n", ReportInterval);
430441
osal_start_reload_timer(zclApp_TaskID, APP_REPORT_EVT, ((uint32)ReportInterval*(uint32)1000));
431-
432-
if (zclApp_Config.ModeSound == true) {
433-
HalLedSet(HANDSET_PIN, HAL_LED_MODE_OFF);
434-
HalLedSet(CATCH_PIN, HAL_LED_MODE_OFF);
435-
}
436-
else {
437-
HalLedSet(HANDSET_PIN, HAL_LED_MODE_ON);
438-
HalLedSet(CATCH_PIN, HAL_LED_MODE_ON);
439-
}
442+
443+
HalLedSet(HANDSET_PIN, !zclApp_Config.ModeSound);
444+
HalLedSet(CATCH_PIN, !zclApp_Config.ModeSound);
440445
HalLedSet(ANSWER_PIN, HAL_LED_MODE_OFF);
441446
}
442447

0 commit comments

Comments
 (0)