Skip to content

Commit b338837

Browse files
committed
populate dateCode
1 parent 7d03135 commit b338837

File tree

3 files changed

+48
-9
lines changed

3 files changed

+48
-9
lines changed

src/device.c

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,42 @@ char int_to_hex(u8 num){
283283
return digits[num];
284284
}
285285

286+
void populate_sw_build() {
287+
g_zcl_basicAttrs.swBuildId[1] = int_to_hex(STACK_RELEASE>>4);
288+
g_zcl_basicAttrs.swBuildId[2] = int_to_hex(STACK_RELEASE & 0xf);
289+
g_zcl_basicAttrs.swBuildId[3] = int_to_hex(STACK_BUILD>>4);
290+
g_zcl_basicAttrs.swBuildId[4] = int_to_hex(STACK_BUILD & 0xf);
291+
g_zcl_basicAttrs.swBuildId[6] = int_to_hex(APP_RELEASE>>4);
292+
g_zcl_basicAttrs.swBuildId[7] = int_to_hex(APP_RELEASE & 0xf);
293+
g_zcl_basicAttrs.swBuildId[8] = int_to_hex(APP_BUILD>>4);
294+
g_zcl_basicAttrs.swBuildId[9] = int_to_hex(APP_BUILD & 0xf);
295+
}
296+
297+
void populate_date_code() {
298+
u8 month;
299+
if (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n') month = 1;
300+
else if (__DATE__[0] == 'F') month = 2;
301+
else if (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r') month = 3;
302+
else if (__DATE__[0] == 'A' && __DATE__[1] == 'p') month = 4;
303+
else if (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y') month = 5;
304+
else if (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n') month = 6;
305+
else if (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l') month = 7;
306+
else if (__DATE__[0] == 'A' && __DATE__[1] == 'u') month = 8;
307+
else if (__DATE__[0] == 'S') month = 9;
308+
else if (__DATE__[0] == 'O') month = 10;
309+
else if (__DATE__[0] == 'N') month = 11;
310+
else if (__DATE__[0] == 'D') month = 12;
311+
312+
g_zcl_basicAttrs.dateCode[1] = __DATE__[7];
313+
g_zcl_basicAttrs.dateCode[2] = __DATE__[8];
314+
g_zcl_basicAttrs.dateCode[3] = __DATE__[9];
315+
g_zcl_basicAttrs.dateCode[4] = __DATE__[10];
316+
g_zcl_basicAttrs.dateCode[5] = '0' + month / 10;
317+
g_zcl_basicAttrs.dateCode[6] = '0' + month % 10;
318+
g_zcl_basicAttrs.dateCode[7] = __DATE__[4] >= '0' ? (__DATE__[4]) : '0';
319+
g_zcl_basicAttrs.dateCode[8] = __DATE__[5];
320+
}
321+
286322

287323
/*********************************************************************
288324
* @fn user_init
@@ -314,15 +350,9 @@ void user_init(bool isRetention)
314350
ind_init();
315351

316352
if(!isRetention){
317-
/* Populate swBuildId version */
318-
g_zcl_basicAttrs.swBuildId[1] = int_to_hex(STACK_RELEASE>>4);
319-
g_zcl_basicAttrs.swBuildId[2] = int_to_hex(STACK_RELEASE & 0xf);
320-
g_zcl_basicAttrs.swBuildId[3] = int_to_hex(STACK_BUILD>>4);
321-
g_zcl_basicAttrs.swBuildId[4] = int_to_hex(STACK_BUILD & 0xf);
322-
g_zcl_basicAttrs.swBuildId[6] = int_to_hex(APP_RELEASE>>4);
323-
g_zcl_basicAttrs.swBuildId[7] = int_to_hex(APP_RELEASE & 0xf);
324-
g_zcl_basicAttrs.swBuildId[8] = int_to_hex(APP_BUILD>>4);
325-
g_zcl_basicAttrs.swBuildId[9] = int_to_hex(APP_BUILD & 0xf);
353+
/* Populate properties with compiled-in values */
354+
populate_sw_build();
355+
populate_date_code();
326356

327357
/* Initialize Stack */
328358
stack_init();

src/device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ typedef struct{
4646
u8 manuName[ZCL_BASIC_MAX_LENGTH];
4747
u8 modelId[ZCL_BASIC_MAX_LENGTH];
4848
u8 swBuildId[ZCL_BASIC_MAX_LENGTH];
49+
u8 dateCode[ZCL_BASIC_MAX_LENGTH];
4950
u8 powerSource;
5051
u8 deviceEnable;
5152
}zcl_basicAttr_t;

src/sensorEpCfg.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333
#define ZCL_BASIC_SW_BUILD_ID {9,'0','0','0','0','-','0','0','0','0'}
3434
#endif
3535

36+
#ifndef ZCL_BASIC_DATE_CODE
37+
#define ZCL_BASIC_DATE_CODE {8,'0','0','0','0','0','0','0','0'}
38+
#endif
39+
3640

3741
/**********************************************************************
3842
* TYPEDEFS
@@ -107,6 +111,9 @@ zcl_basicAttr_t g_zcl_basicAttrs =
107111
.modelId = ZCL_BASIC_MODEL_ID,
108112
#ifdef ZCL_BASIC_SW_BUILD_ID
109113
.swBuildId = ZCL_BASIC_SW_BUILD_ID,
114+
#endif
115+
#ifdef ZCL_BASIC_DATE_CODE
116+
.dateCode = ZCL_BASIC_DATE_CODE,
110117
#endif
111118
.powerSource = POWER_SOURCE_BATTERY,
112119
.deviceEnable = TRUE,
@@ -123,6 +130,7 @@ const zclAttrInfo_t basic_attrTbl[] =
123130
{ ZCL_ATTRID_BASIC_POWER_SOURCE, ZCL_DATA_TYPE_ENUM8, ACCESS_CONTROL_READ, (u8*)&g_zcl_basicAttrs.powerSource},
124131
{ ZCL_ATTRID_BASIC_DEV_ENABLED, ZCL_DATA_TYPE_BOOLEAN, ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE, (u8*)&g_zcl_basicAttrs.deviceEnable},
125132
{ ZCL_ATTRID_BASIC_SW_BUILD_ID, ZCL_DATA_TYPE_CHAR_STR, ACCESS_CONTROL_READ, (u8*)&g_zcl_basicAttrs.swBuildId},
133+
{ ZCL_ATTRID_BASIC_DATE_CODE, ZCL_DATA_TYPE_CHAR_STR, ACCESS_CONTROL_READ, (u8*)g_zcl_basicAttrs.dateCode},
126134

127135
{ ZCL_ATTRID_GLOBAL_CLUSTER_REVISION, ZCL_DATA_TYPE_UINT16, ACCESS_CONTROL_READ, (u8*)&zcl_attr_global_clusterRevision},
128136
};

0 commit comments

Comments
 (0)