Commit a615faf9 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'yjq' into 'master'

Yjq

See merge request chenweican/k-sdk!11
parents d6172530 2a352fcf
......@@ -141,7 +141,6 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d
char *zErrMsg = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
if(_kk_check_property_exist(deviceCode,identifier) == 1)
{
WARNING_PRINT("[%s][%d] DATA ALREADY EXIST!!!\n",__FUNCTION__,__LINE__);
......
......@@ -8,7 +8,3 @@
"attribute":"0x0000",
"reportFunc":"kk_tsl_report_global_onoff",
"controlFunc":"zclOnOff"
}
]
}
\ No newline at end of file
......@@ -1417,3 +1417,502 @@ EmberStatus zclThermostat_GetRelayStatusLog(uint16_t node,
/*********************************************************************************************/
EmberStatus zone_enroll_response_command(uint16_t node,
uint8_t ep,
EnrollResponseCode code,
uint8_t id)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ZONE_CLUSTER_ID,
ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID);
zclBufferAddByte(code);
zclBufferAddByte(id);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[zone_enroll_response_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus initiate_normal_operation_mode_command(uint16_t node,
uint8_t ep)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ZONE_CLUSTER_ID,
ZCL_INITIATE_NORMAL_OPERATION_MODE_COMMAND_ID);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[initiate_normal_operation_mode_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus initiate_test_mode_command(uint16_t node,
uint8_t ep,
uint8_t duration,
uint8_t level)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ZONE_CLUSTER_ID,
ZCL_INITIATE_TEST_MODE_COMMAND_ID);
zclBufferAddByte(duration);
zclBufferAddByte(level);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[initiate_test_mode_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus zone_status_change_notification(uint16_t node,
uint8_t ep,
uint16_t zoneStatus,
uint8_t extStatus,
uint8_t id,
uint16_t delay)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ZONE_CLUSTER_ID,
ZCL_ZONE_STATUS_CHANGE_NOTIFICATION_COMMAND_ID);
zclBufferAddWord(zoneStatus);
zclBufferAddByte(extStatus);
zclBufferAddByte(id);
zclBufferAddWord(delay);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[zone_status_change_notification] status:0x%02x\r\n",status);
return status;
}
EmberStatus zone_enroll_request_command(uint16_t node,
uint8_t ep,
uint16_t type,
uint16_t code)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ZONE_CLUSTER_ID,
ZCL_ZONE_ENROLL_REQUEST_COMMAND_ID);
zclBufferAddWord(type);
zclBufferAddWord(code);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[zone_enroll_request_command] status:0x%02x\r\n",status);
return status;
}
///////////////////////////
EmberStatus arm_command(uint16_t node,
uint8_t ep,
ArmMode mode,
char* code,
uint8_t id)
{
int i;
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_ARM_COMMAND_ID);
zclBufferAddByte(mode);
for(i=0;i<strlen(code);i++){
zclBufferAddByte(code[i]);
}
zclBufferAddByte(id);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[arm_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus bypass_command(uint16_t node,
uint8_t ep,
uint8_t num,
uint8_t *id,
char* code)
{
int i;
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_BYPASS_COMMAND_ID);
zclBufferAddByte(num);
for(i=0;i<num;i++){
zclBufferAddByte(id[i]);
}
for(i=0;i<strlen(code);i++){
zclBufferAddByte(code[i]);
}
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[bypass_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus emergency_command(uint16_t node,
uint8_t ep)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_EMERGENCY_COMMAND_ID);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[emergency_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus fire_command(uint16_t node,
uint8_t ep)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_FIRE_COMMAND_ID);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[fire_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus panic_command(uint16_t node,
uint8_t ep)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_PANIC_COMMAND_ID);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[panic_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_zone_id_command(uint16_t node,
uint8_t ep)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_ZONE_ID_MAP_COMMAND_ID);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_zone_id_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_zone_information_command(uint16_t node,
uint8_t ep,
uint8_t id)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_ZONE_INFORMATION_COMMAND_ID);
zclBufferAddByte(id);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_zone_information_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_panel_status_command(uint16_t node,
uint8_t ep)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_PANEL_STATUS_COMMAND_ID);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_panel_status_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_bypassed_zone_list_command(uint16_t node,
uint8_t ep)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_BYPASSED_ZONE_LIST_COMMAND_ID);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_bypassed_zone_list_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_zone_status_command(uint16_t node,
uint8_t ep,
uint8_t statrId,
uint8_t maxNum,
bool flag,
uint16_t mask)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_ZONE_STATUS_COMMAND_ID);
zclBufferAddByte(statrId);
zclBufferAddByte(maxNum);
zclBufferAddByte(flag);
zclBufferAddWord(mask);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_zone_status_command] status:0x%02x\r\n",status);
return status;
}
EmberStatus arm_response(uint16_t node,
uint8_t ep,
ArmNotification arm)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_ARM_RESPONSE_COMMAND_ID);
zclBufferAddByte(arm);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[arm_response] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_zone_id_map_response(uint16_t node,
uint8_t ep,
uint16_t* map)//16
{
int i=0;
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_ZONE_ID_MAP_RESPONSE_COMMAND_ID);
for(int i=0;i<16;i++){
zclBufferAddWord(map[i]);
}
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_zone_id_map_response] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_zone_information_response(uint16_t node,
uint8_t ep,
uint8_t id,
uint16_t type,
uint8_t* ieee,
char* label)
{
int i=0;
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_ZONE_INFORMATION_RESPONSE_COMMAND_ID);
zclBufferAddByte(id);
zclBufferAddWord(type);
for(;i<8;i++){
zclBufferAddByte(ieee[i]);
}
for(i=0;i<strlen(label);i++){
zclBufferAddByte(label[i]);
}
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_zone_information_response] status:0x%02x\r\n",status);
return status;
}
EmberStatus zone_status_changed(uint16_t node,
uint8_t ep,
uint8_t id,
uint16_t zonestatus,
uint8_t audible,
char* label)
{
int i=0;
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_ZONE_STATUS_CHANGED_COMMAND_ID);
zclBufferAddByte(id);
zclBufferAddWord(zonestatus);
zclBufferAddByte(audible);
for(i=0;i<strlen(label);i++){
zclBufferAddByte(label[i]);
}
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[zone_status_changed] status:0x%02x\r\n",status);
return status;
}
EmberStatus panel_status_changed(uint16_t node,
uint8_t ep,
PanelStatus panel,
uint8_t remain,
uint8_t audible,
AlarmStatus alarm)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_PANEL_STATUS_CHANGED_COMMAND_ID);
zclBufferAddByte(panel);
zclBufferAddByte(remain);
zclBufferAddByte(audible);
zclBufferAddByte(alarm);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[panel_status_changed] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_panel_status_response(uint16_t node,
uint8_t ep,
PanelStatus panel,
uint8_t remain,
uint8_t audible,
AlarmStatus alarm)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_PANEL_STATUS_RESPONSE_COMMAND_ID);
zclBufferAddByte(panel);
zclBufferAddByte(remain);
zclBufferAddByte(audible);
zclBufferAddByte(alarm);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_panel_status_response] status:0x%02x\r\n",status);
return status;
}
EmberStatus set_bypassed_zone_list(uint16_t node,
uint8_t ep,
uint8_t num,
uint8_t* id)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_SET_BYPASSED_ZONE_LIST_COMMAND_ID);
zclBufferAddByte(num);
for(int i=0;i<num;i++){
zclBufferAddByte(id[i]);
}
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[set_bypassed_zone_list] status:0x%02x\r\n",status);
return status;
}
EmberStatus bypass_response(uint16_t node,
uint8_t ep,
uint8_t num,
BypassResult* id)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_BYPASS_RESPONSE_COMMAND_ID);
zclBufferAddByte(num);
for(int i=0;i<num;i++){
zclBufferAddByte(id[i]);
}
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[bypass_response] status:0x%02x\r\n",status);
return status;
}
EmberStatus get_zone_status_response(uint16_t node,
uint8_t ep,
bool complete,
uint8_t num,
ZoneStatus_s**ZoneStatus)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_ACE_CLUSTER_ID,
ZCL_GET_ZONE_STATUS_RESPONSE_COMMAND_ID);
zclBufferAddByte(complete);
zclBufferAddByte(num);
for(int i=0;i<num;i++){
zclBufferAddByte(ZoneStatus[i]->zoneId);
zclBufferAddWord(ZoneStatus[i]->zoneStatus);
}
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[get_zone_status_response] status:0x%02x\r\n",status);
return status;
}
EmberStatus start_warning(uint16_t node,
uint8_t ep,
WarningModes mode,
StrobeField strobe,
SirenLevel siren,
uint16_t duration,
uint8_t cycle,
StrobeLevel level)
{
uint8_t map;
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_WD_CLUSTER_ID,
ZCL_START_WARNING_COMMAND_ID);
map = (mode<<4)|(strobe<<2)|siren;
zclBufferAddByte(map);
zclBufferAddWord(duration);
zclBufferAddByte(cycle);
zclBufferAddByte(level);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[start_warning] status:0x%02x\r\n",status);
return status;
}
EmberStatus squawk_command(uint16_t node,
uint8_t ep,
WarningModes mode,
StrobeField strobe,
SquawkModeField squawk)
{
uint8_t map;
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_IAS_WD_CLUSTER_ID,
ZCL_SQUAWK_COMMAND_ID);
map = (mode<<4)|(strobe<<3)|squawk;
zclBufferAddByte(map);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[squawk_command] status:0x%02x\r\n",status);
return status;
}
......@@ -40,6 +40,96 @@ kk_rpc_report_api_s kk_rpc_report_api[];
uint8_t kk_get_rpc_set_api_size(void );
uint8_t kk_get_rpc_report_api_size(void );
typedef enum{
EnrollResponseCode_Success = 0x00,
EnrollResponseCode_NoSupported = 0x01,
EnrollResponseCode_NoEnrollPermit = 0x02,
EnrollResponseCode_TooManyZones = 0x03,
}EnrollResponseCode;
typedef enum{
ArmMode_Disarm = 0x00,
ArmMode_ArmDayOrHomeZonesOnly = 0x01,
ArmMode_ArmNightOrSleepZonesOnly = 0x02,
ArmMode_ArmAllZones = 0x03,
}ArmMode;
typedef enum{
ArmNotification_AllZonesDisarmed = 0x01,
ArmNotification_OnlyDayOrHomeZonesArmed = 0x02,
ArmNotification_OnlyNightOrSleepZonesArmed = 0x03,
ArmNotification_AllZonesArmed = 0x04,
ArmNotification_InvalidArmOrDisarmCode = 0x05,
ArmNotification_NotReadyToArm = 0x06,
ArmNotification_AlreadyDisarmed
}ArmNotification;
typedef enum{
PanelStatus_PanelDisarmedAndReadyToArm = 0x00,
PanelStatus_ArmedStay = 0x01,
PanelStatus_ArmedNight = 0x02,
PanelStatus_ArmedAway = 0x03,
PanelStatus_ExitDelay = 0x04,
PanelStatus_EntryDelay = 0x05,
PanelStatus_NotReadyToArm = 0x06,
PanelStatus_InAlarm = 0x07,
PanelStatus_ArmingStay = 0x08,
PanelStatus_ArmingNight = 0x09,
PanelStatus_ArmingAway = 0x0a,
}PanelStatus;
typedef enum{
AlarmStatus_NoAlarm = 0x00,
AlarmStatus_Burglar = 0x01,
AlarmStatus_Fire = 0x02,
AlarmStatus_Emergency = 0x03,
AlarmStatus_PolicePanic = 0x04,
AlarmStatus_FirePanic = 0x05,
AlarmStatus_EmergencyPanic = 0x06,
}AlarmStatus;
typedef enum{
BypassResult_ZoneBypassed = 0x00,
BypassResult_ZoneNotBypassed = 0x01,
BypassResult_NotAllowed = 0x02,
BypassResult_InvalidZoneID = 0x03,
BypassResult_UnknownZoneID = 0x04,
BypassResult_InvalidArmOrDisarmCode = 0x05,
}BypassResult;
typedef struct
{
uint8_t zoneId;
uint16_t zoneStatus;
}ZoneStatus_s;
typedef enum{
WarningModes_Stop = 0x00,
WarningModes_Burglar = 0x01,
WarningModes_Fire = 0x02,
WarningModes_Emergency = 0x03,
WarningModes_PolicePanic = 0x04,
WarningModes_FirePanic = 0x05,
WarningModes_EmergencyPanic = 0x06,
}WarningModes;
typedef enum{
StrobeField_NoStrobe = 0x00,
StrobeField_UseStrobe = 0x01,
}StrobeField;
typedef enum{
SirenLevel_LowLevelSound = 0x00,
SirenLevel_MediumLevelSound = 0x01,
SirenLevel_HighLevelSound = 0x02,
SirenLevel_VeryHighLevelSound = 0x03,
}SirenLevel;
typedef enum{
StrobeLevel_LowLevelSound = 0x00,
StrobeLevel_MediumLevelSound = 0x01,
StrobeLevel_HighLevelSound = 0x02,
StrobeLevel_VeryHighLevelSound = 0x03,
}StrobeLevel;
typedef enum{
SquawkModeField_Arm = 0x00,
SquawkModeField_Disarmed = 0x01,
}SquawkModeField;
EmberStatus kk_network_leave(void);
......@@ -418,4 +508,115 @@ EmberStatus zclThermostat_GetRelayStatusLog(uint16_t node,
uint8_t ep);
//IAS
EmberStatus arm_command(uint16_t node,
uint8_t ep,
ArmMode mode,
char* code,
uint8_t id);
EmberStatus bypass_command(uint16_t node,
uint8_t ep,
uint8_t num,
uint8_t *id,
char* code);
EmberStatus emergency_command(uint16_t node,
uint8_t ep);
EmberStatus fire_command(uint16_t node,
uint8_t ep);
EmberStatus panic_command(uint16_t node,
uint8_t ep);
EmberStatus get_zone_id_command(uint16_t node,
uint8_t ep);
EmberStatus get_zone_information_command(uint16_t node,
uint8_t ep,
uint8_t id);
EmberStatus get_panel_status_command(uint16_t node,
uint8_t ep);
EmberStatus get_bypassed_zone_list_command(uint16_t node,
uint8_t ep);
EmberStatus get_zone_status_command(uint16_t node,
uint8_t ep,
uint8_t statrId,
uint8_t maxNum,
bool flag,
uint16_t mask);
EmberStatus arm_response(uint16_t node,
uint8_t ep,
ArmNotification arm);
EmberStatus get_zone_id_map_response(uint16_t node,
uint8_t ep,
uint16_t* map);//16
EmberStatus get_zone_information_response(uint16_t node,
uint8_t ep,
uint8_t id,
uint16_t type,
uint8_t* ieee,
char* label);
EmberStatus zone_status_changed(uint16_t node,
uint8_t ep,
uint8_t id,
uint16_t zonestatus,
uint8_t audible,
char* label);
EmberStatus panel_status_changed(uint16_t node,
uint8_t ep,
PanelStatus panel,
uint8_t remain,
uint8_t audible,
AlarmStatus alarm);
EmberStatus get_panel_status_response(uint16_t node,
uint8_t ep,
PanelStatus panel,
uint8_t remain,
uint8_t audible,
AlarmStatus alarm);
EmberStatus set_bypassed_zone_list(uint16_t node,
uint8_t ep,
uint8_t num,
uint8_t* id);
EmberStatus bypass_response(uint16_t node,
uint8_t ep,
uint8_t num,
BypassResult* id);
EmberStatus get_zone_status_response(uint16_t node,
uint8_t ep,
bool complete,
uint8_t num,
ZoneStatus_s**ZoneStatus);
EmberStatus start_warning(uint16_t node,
uint8_t ep,
WarningModes mode,
StrobeField strobe,
SirenLevel siren,
uint16_t duration,
uint8_t cycle,
StrobeLevel level);
EmberStatus squawk_command(uint16_t node,
uint8_t ep,
WarningModes mode,
StrobeField strobe,
SquawkModeField squawk);
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment