implemented LED control

This commit is contained in:
formtapez
2019-05-04 23:30:46 +02:00
parent 4754edbbf3
commit 264f952c4e
6 changed files with 174 additions and 59 deletions

View File

@@ -15,7 +15,7 @@ CC2530 based multi-purpose ZigBee Relais, Switch, Sensor and Router
* Input for S0-Bus impulses from power-, water- or gas-meters. Count-Value will be reported via ZigBee)
* Output for one normal LED or up to 10 WS2812B/Neopixel RGB-LEDs (controllable via ZigBee)
* Analog input to measure voltages of up to 32 Volt. (Voltage will be reported via ZigBee)
* Fully equipped debug-port to allow CC Debugger flashing and packet sniffing
# Connection diagrams
@@ -41,5 +41,13 @@ CC2530 based multi-purpose ZigBee Relais, Switch, Sensor and Router
# Flashing with CC Debugger
1. Get **SmartRF Flash Programmer v1.12.8 (not v2.x!)** from https://www.ti.com/tool/flash-programmer
2. Select "Program CCxxxx..." and "System-on-Chip" tab
3. Load HEX-File and perform "Erase, program and verify" action
2. Connect CC Debugger to the Debug-Port of ZigUP with an 1:1 cable.
3. Select "Program CCxxxx..." and "System-on-Chip" tab
4. Load HEX-File and perform "Erase, program and verify" action
# Packet Sniffing using CC Debugger
1. Get **PACKET-SNIFFER v2.18.1 (not SNIFFER-2 v1.x!)** from http://www.ti.com/tool/PACKET-SNIFFER
2. Connect CC Debugger to the Debug-Port of ZigUP with an 1:1 cable.
3. Select protocol "IEEE 802.15.4/ZigBee" and click "Start"
4. Change radio channel and click "Start"
5. Re-flash ZigUP firmware when you are done. Because it was replaced by a sniffer-firmware.

View File

@@ -1493,6 +1493,7 @@
<state>xZCL_LEVEL_CTRL</state>
<state>ZCL_DIAGNOSTIC</state>
<state>FEATURE_SYSTEM_STATS</state>
<state>ZCL_DOORLOCK</state>
</option>
<option>
<name>CCPreprocFile</name>
@@ -4722,6 +4723,12 @@
<file>
<name>$PROJ_DIR$\..\Source\ws2812.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl_closures.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl_closures.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl_lighting.c</name>
</file>

View File

@@ -4,6 +4,7 @@
#include <math.h>
#include "zcl_lighting.h"
#include "zcl_closures.h"
#include "zcl_zigup.h"
#include "zcl.h"
#include "zcl_ha.h"
@@ -139,8 +140,6 @@ static zclGeneral_AppCallbacks_t zclZigUP_CmdCallbacks =
NULL // RSSI Location Response command
};
static zclLighting_AppCallbacks_t zclZigUP_LightingCmdCBs =
{
NULL, // Move To Hue Command
@@ -160,29 +159,63 @@ static zclLighting_AppCallbacks_t zclZigUP_LightingCmdCBs =
NULL, // Enhanced Move To Hue And Saturation;
NULL, // Color Loop Set Command
NULL, // Stop Move Step;
/*
zclColor_MoveToHueCB, //Move To Hue Command
zclColor_MoveHueCB, //Move Hue Command
zclColor_StepHueCB, //Step Hue Command
zclColor_MoveToSaturationCB, //Move To Saturation Command
zclColor_MoveSaturationCB, //Move Saturation Command
zclColor_StepSaturationCB, //Step Saturation Command
zclColor_MoveToHueAndSaturationCB, //Move To Hue And Saturation Command
zclColor_MoveToColorCB, // Move To Color Command
zclColor_MoveColorCB, // Move Color Command
zclColor_StepColorCB, // STEP To Color Command
NULL, // Move To Color Temperature Command
zclColor_EnhMoveToHueCB,// Enhanced Move To Hue
zclColor_MoveEnhHueCB, // Enhanced Move Hue;
zclColor_StepEnhHueCB, // Enhanced Step Hue;
zclColor_MoveToEnhHueAndSaturationCB, // Enhanced Move To Hue And Saturation;
zclColor_SetColorLoopCB, // Color Loop Set Command
zclColor_StopCB, // Stop Move Step;
*/
};
static zclClosures_DoorLockAppCallbacks_t zclZigUP_DoorLockCmdCallbacks =
{
zclZigUP_DoorLockCB, // DoorLock cluster command
zclZigUP_DoorLockRspCB, // DoorLock Response
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
};
/*********************************************************************
* @fn zclZigUP_Init
*
@@ -211,6 +244,9 @@ void zclZigUP_Init( byte task_id )
// Register the ZCL Lighting Cluster Library callback functions
zclLighting_RegisterCmdCallbacks( ZIGUP_ENDPOINT, &zclZigUP_LightingCmdCBs );
// Register the ZCL DoorLock Cluster Library callback function
zclClosures_RegisterDoorLockCmdCallbacks( ZIGUP_ENDPOINT, &zclZigUP_DoorLockCmdCallbacks );
// Register the application's attribute list
zcl_registerAttrList( ZIGUP_ENDPOINT, zclZigUP_NumAttributes, zclZigUP_Attrs );
@@ -558,6 +594,66 @@ ZStatus_t zclZigUP_MoveToColorCB( zclCCMoveToColor_t *pCmd )
return ( ZSuccess );
}
/*********************************************************************
* @fn zclZigUP_DoorLockCB
*
* @brief Callback from the ZCL General Cluster Library when
* it received an Door Lock cluster Command for this application.
*
* @param pInMsg - process incoming message
* @param pInCmd - PIN/RFID code of command
*
* @return ZStatus_t
*/
static ZStatus_t zclZigUP_DoorLockCB ( zclIncoming_t *pInMsg, zclDoorLock_t *pInCmd )
{
// LED OFF - Lock the door
if ( pInMsg->hdr.commandID == COMMAND_CLOSURES_LOCK_DOOR )
{
LED(0);
zclClosures_SendDoorLockStatusResponse( pInMsg->msg->endPoint, &pInMsg->msg->srcAddr, COMMAND_CLOSURES_LOCK_DOOR, ZCL_STATUS_SUCCESS, TRUE, pInMsg->hdr.transSeqNum );
}
// LED ON - Unlock the door
else if ( pInMsg->hdr.commandID == COMMAND_CLOSURES_UNLOCK_DOOR )
{
LED(1);
zclClosures_SendDoorLockStatusResponse( pInMsg->msg->endPoint, &pInMsg->msg->srcAddr, COMMAND_CLOSURES_UNLOCK_DOOR, ZCL_STATUS_SUCCESS, TRUE, pInMsg->hdr.transSeqNum );
}
// Toggle the door
else if ( pInMsg->hdr.commandID == COMMAND_CLOSURES_TOGGLE_DOOR )
{
LED(!STATE_LED);
zclClosures_SendDoorLockStatusResponse( pInMsg->msg->endPoint, &pInMsg->msg->srcAddr, COMMAND_CLOSURES_TOGGLE_DOOR, ZCL_STATUS_SUCCESS, TRUE, pInMsg->hdr.transSeqNum );
}
else
{
return ( ZCL_STATUS_FAILURE ); // invalid command
}
return ( ZCL_STATUS_CMD_HAS_RSP );
}
/*********************************************************************
* @fn zclZigUP_DoorLockRspCB
*
* @brief Callback from the ZCL General Cluster Library when
* it received an Door Lock response for this application.
*
* @param cmd - Command ID
* @param srcAddr - Requestor's address
* @param transSeqNum - Transaction sequence number
* @param status - status response from server's door lock cmd
*
* @return ZStatus_t
*/
static ZStatus_t zclZigUP_DoorLockRspCB ( zclIncoming_t *pInMsg, uint8 status )
{
return ( ZCL_STATUS_SUCCESS );
}
/******************************************************************************
*

View File

@@ -9,6 +9,7 @@ extern "C"
#include "zcl.h"
#include "zcl_general.h"
#include "zcl_lighting.h"
#include "zcl_closures.h"
#define ZIGUP_ENDPOINT 8
@@ -57,7 +58,8 @@ static void zclZigUP_IdentifyCB( zclIdentify_t *pCmd );
static void zclZigUP_IdentifyQueryRspCB( zclIdentifyQueryRsp_t *pRsp );
static void zclZigUP_OnOffCB( uint8 cmd );
ZStatus_t zclZigUP_MoveToColorCB( zclCCMoveToColor_t *pCmd );
static ZStatus_t zclZigUP_DoorLockCB ( zclIncoming_t *pInMsg, zclDoorLock_t *pInCmd );
static ZStatus_t zclZigUP_DoorLockRspCB ( zclIncoming_t *pInMsg, uint8 status );
static void zclZigUP_ProcessIdentifyTimeChange( void );

View File

@@ -20,6 +20,8 @@
#include "zcl_zigup.h"
#include "global.h"
#define ZIGUP_DEVICE_VERSION 0
#define ZIGUP_FLAGS 0
@@ -180,7 +182,7 @@ CONST zclAttrRec_t zclZigUP_Attrs[] =
ATTRID_ON_OFF,
ZCL_DATATYPE_BOOLEAN,
ACCESS_CONTROL_READ,
(void *)&zclZigUP_OnOff
(void *)&zclZigUP_OnOff // TODO
}
},