tranthudo

UpdateDeviceConfigAttributeSupport

Jun 4th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.40 KB | None | 0 0
  1. *********** Cập nhật hỗ trợ cấu hình các tham số riêng của thiết bị ***********
  2. - Cập nhật Basic cluster hỗ trợ manufacturer-specific attribute trong thư mục sdk\JN-SW-4170\Components\ZCL\Clusters\General
  3.   + Basic.c/h
  4.   + Basic_internal.h
  5.   + BasicClientCommands.c
  6.   + BasicCommandHandler.c
  7.  
  8. - Khai báo hỗ trợ manufacturer-specific:
  9.   + Thay đổi Manufacturer code: Hiện tại Manufacturer code = 0x1037 (NXP), chuyển sang giá trị khác được thống nhất cho VinSmart (ví dụ 0x1040)
  10.     * zcl_options.h:
  11.     #define ZCL_MANUFACTURER_CODE                                0x1040
  12.    
  13.     * app.zpscfg: Đổi Manufacturer code trong Node Descriptor sang 0x1040
  14.    
  15. - Khai báo enable các thuộc tính và các lệnh cấu hình:
  16.   + zcl_options.h:
  17.    
  18.     /* Manufacturer Specific Attributes */
  19.     #define CLD_BAS_ATTR_MAN_SPEC_LED_INTENSITY
  20.     #define CLD_BAS_ATTR_MAN_SPEC_VIBRATION_INTENSITY
  21.  
  22.     #ifdef CLD_BAS_ATTR_MAN_SPEC_LED_INTENSITY
  23.     #define CLD_BAS_CMD_MAN_SPEC_SET_LED_INTENSITY
  24.     #endif
  25.  
  26.     #ifdef CLD_BAS_ATTR_MAN_SPEC_VIBRATION_INTENSITY
  27.     #define CLD_BAS_CMD_MAN_SPEC_SET_VIBRATION_INTENSITY
  28.     #endif
  29.  
  30. - Thêm mã nguồn module xử lý cấu hình và lưu tham số
  31.   + app_device_config.c/h
  32.  
  33. - Đăng ký hàm callback cấu hình riêng cho từng thiết bị và load cấu hình từ flash khi khởi tạo ZCL riêng cho thiết bị:
  34.   + Hàm vSensor_DeviceSpecificInit()/APP_vZCL_DeviceSpecific_Init()
  35.  
  36.     /* Register device config callback */
  37.     bDeviceConfig_RegisterCallback(bSensor_DeviceConfig);
  38.  
  39.     /* Load device config from flash and assign to basic cluster as initialization value */
  40.     bDeviceConfig_LoadConfig(&sSensor.sBasicServerCluster);
  41.  
  42. - Thêm mã nguồn thực thi lệnh cấu hình trong app_zcl_sensor_task/app_zcl_task.c
  43.   + Hàm APP_ZCL_cbEndpointCallback, sự kiện E_ZCL_CBET_CLUSTER_CUSTOM
  44.  
  45.   case E_ZCL_CBET_CLUSTER_CUSTOM:
  46.         switch (psEvent->uMessage.sClusterCustomMessage.u16ClusterId)
  47.         {
  48.             case GENERAL_CLUSTER_ID_BASIC:
  49.             {
  50.                 tsCLD_BasicCallBackMessage *psCallBackMessage = (tsCLD_BasicCallBackMessage*)psEvent->uMessage.sClusterCustomMessage.pvCustomData;
  51.                 if (psCallBackMessage->u8CommandId == E_CLD_BASIC_CMD_MAN_SPEC_SET_LED_INTENSITY)
  52.                 {
  53.                     /* Update device config */
  54.                     bDeviceConfig_UpdateConfig(DEVICE_CONFIG_LED_INTENSITY_ID_BIT,
  55.                                                (void*) &sSensor.sBasicServerCluster.u8LedIntensity);
  56.                 }
  57.                 else if (psCallBackMessage->u8CommandId == E_CLD_BASIC_CMD_MAN_SPEC_SET_VIBRATION_INTENSITY)
  58.                 {
  59.                     /* Update device config */
  60.                     bDeviceConfig_UpdateConfig(DEVICE_CONFIG_VIBRATION_INTENSITY_BIT,
  61.                                                (void*) &sSensor.sBasicServerCluster.u8VibrationIntensity);
  62.                 }
  63.             }
  64.             break;
  65.         }
  66.  
  67.  
  68. ************** Cập nhật hàm cấu hình riêng cho từng thiết bị ********************
  69. - Thêm hàm cấu hình tham số cho từng thiết bị với template:
  70.  
  71.     PUBLIC BOOL_T bDevice_DeviceConfig(uint8 u8UpdateMask,
  72.                                        tsDeviceConfigParams* psDeviceConfigParam)
  73.     {
  74.     #ifdef DEVICE_CONFIG_LED_INTENSITY_ID_BIT
  75.         if (u8UpdateMask & DEVICE_CONFIG_LED_INTENSITY_ID_BIT)
  76.         {
  77.             /* Call function to set LED intensity */
  78.         }
  79.     #endif
  80.  
  81.     #ifdef DEVICE_CONFIG_VIBRATION_INTENSITY_BIT
  82.         if (u8UpdateMask & DEVICE_CONFIG_VIBRATION_INTENSITY_BIT)
  83.         {
  84.             /* Call function to set vibration intensity */
  85.         }
  86.     #endif
  87.  
  88.         return TRUE;
  89.     }
Add Comment
Please, Sign In to add comment