@@ -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 ();
0 commit comments