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

@@ -11,4 +11,4 @@ extern uint16 zclZigUPSeqNum;
extern volatile uint32 S0;
extern volatile uint8 STATE_LIGHT;
extern volatile uint8 STATE_LED;
extern volatile uint8 STATE_LED;

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"
@@ -112,11 +113,11 @@ void zclZigUP_Reporting(void)
*/
static zclGeneral_AppCallbacks_t zclZigUP_CmdCallbacks =
{
zclZigUP_BasicResetCB, // Basic Cluster Reset command
zclZigUP_IdentifyCB, // Identify command
zclZigUP_BasicResetCB, // Basic Cluster Reset command
zclZigUP_IdentifyCB, // Identify command
NULL, // Identify Trigger Effect command
zclZigUP_IdentifyQueryRspCB, // Identify Query Response command
zclZigUP_OnOffCB, // On/Off cluster commands
zclZigUP_IdentifyQueryRspCB, // Identify Query Response command
zclZigUP_OnOffCB, // On/Off cluster commands
NULL, // On/Off cluster enhanced command Off with Effect
NULL, // On/Off cluster enhanced command On with Recall Global Scene
NULL, // On/Off cluster enhanced command On with Timed Off
@@ -124,65 +125,97 @@ static zclGeneral_AppCallbacks_t zclZigUP_CmdCallbacks =
NULL, // Group Response commands
#endif
#ifdef ZCL_SCENES
NULL, // Scene Store Request command
NULL, // Scene Recall Request command
NULL, // Scene Response command
NULL, // Scene Store Request command
NULL, // Scene Recall Request command
NULL, // Scene Response command
#endif
#ifdef ZCL_ALARMS
NULL, // Alarm (Response) commands
NULL, // Alarm (Response) commands
#endif
#ifdef SE_UK_EXT
NULL, // Get Event Log command
NULL, // Publish Event Log command
NULL, // Get Event Log command
NULL, // Publish Event Log command
#endif
NULL, // RSSI Location command
NULL // RSSI Location Response command
NULL, // RSSI Location command
NULL // RSSI Location Response command
};
static zclLighting_AppCallbacks_t zclZigUP_LightingCmdCBs =
{
NULL, //Move To Hue Command
NULL, //Move Hue Command
NULL, //Step Hue Command
NULL, //Move To Saturation Command
NULL, //Move Saturation Command
NULL, //Step Saturation Command
NULL, //Move To Hue And Saturation Command
zclZigUP_MoveToColorCB, // Move To Color Command
NULL, // Move Color Command
NULL, // STEP To Color Command
NULL, // Move To Color Temperature Command
NULL,// Enhanced Move To Hue
NULL, // Enhanced Move Hue;
NULL, // Enhanced Step Hue;
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;
*/
NULL, // Move To Hue Command
NULL, // Move Hue Command
NULL, // Step Hue Command
NULL, // Move To Saturation Command
NULL, // Move Saturation Command
NULL, // Step Saturation Command
NULL, // Move To Hue And Saturation Command
zclZigUP_MoveToColorCB, // Move To Color Command
NULL, // Move Color Command
NULL, // STEP To Color Command
NULL, // Move To Color Temperature Command
NULL, // Enhanced Move To Hue
NULL, // Enhanced Move Hue;
NULL, // Enhanced Step Hue;
NULL, // Enhanced Move To Hue And Saturation;
NULL, // Color Loop Set Command
NULL, // 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
*
@@ -210,6 +243,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,7 +9,8 @@ extern "C"
#include "zcl.h"
#include "zcl_general.h"
#include "zcl_lighting.h"
#include "zcl_closures.h"
#define ZIGUP_ENDPOINT 8
#define LIGHT_OFF 0x00
@@ -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
}
},