Dusun Gateway Z-wave API

Table of Contents

Summary

This document lists the API used for Zwave development. The SDK related to it can be download from DUSUN website. For detailed information, please refer to the example in the SDK sample code.

1. SDK init function

SDK init function
Function declaration

				
					BOOL SerialAPI_Init(const char* serial_port, const struct SerialAPI_Callbacks* _callbacks )
				
			
Parameter
Parameter Necessity Type Input type Introduction
serial_port Yes char * input Serial setting etc, /dev/ttyUSB1
SerialAPI_Callbacks Yes Callback function input Seen in example
Sample
				
					const struct SerialAPI_Callbacks serial_api_callbacks = {
        ApplicationCommandHandler,
        ApplicationNodeInformation,
        ApplicationControllerUpdate,
        0,
        0,
        0,
        0,
};

if (!SerialAPI_Init("/dev/ttyUSB1", &serial_api_callbacks))
{
    fprintf(stderr, "SerialAPI not initilized\n");
    return 1;
}
				
			

2. ZW_Version

SDK version query
Function Declaration

				
					
BYTE ZW_Version(BYTE *pBuf)
				
			
Parameter
None
Sample
				
					char buf[64];
ZW_Version(buf);
printf("Vesion: %s \n", buf );
				
			

3. ZW_SoftRest

SDK software reset
Function Declaration
				
					BYTE ZW_SoftReset()
				
			
Parameter
None
Sample
				
					ZW_SoftReset();
				
			

4. SerialAPI_Poll

SDK event poll
Function Declaration
				
					uint8_t SerialAPI_Poll(void)
				
			
Parameter
None
Sample
				
					SerialAPI_Poll();
				
			

Notice: While calling the Poll function, the Z-wave event would return by the registration function in the SerialAPI_Init function.

5. SerialAPI_GetFd

SDK io reuse to get the fd
Function Declaration
				
					int fd = SerialAPI_GetFd();
				
			
Parameter
None
Sample
				
					SerialAPI_Poll();
				
			

6. ZW_AddNodeToNetwork

Add devices to the the network
Function Declaration

				
					void ZW_AddNodeToNetwork(BYTE bMode,VOID_CALLBACKFUNC(completedFunc) (auto LEARN_INFO*))
				
			
Parameter
Parameter Necessity Type Input type Introduction
mode Yes BYTE input REMOVE_NODE_ANY - Remove any node from the network
REMOVE_NODE_CONTROLLER - Remove a controller from the network
REMOVE_NODE_SLAVE - Remove a slaev node from the network
REMOVE_NODE_STOP - Stop learn mode without reporting an error
completedFunc Yes Function input Remove Node Step Callback

Sample

				
					ZW_AddNodeToNetwork(ADD_NODE_ANY|ADD_NODE_OPTION_NETWORK_WIDE,AddNodeStatusUpdate);
				
			

7. ZW_RemoveNodeFromNetwork

Delete devices from the network
Function Declaration

				
					void ZW_RemoveNodeFromNetwork(BYTE bMode, VOID_CALLBACKFUNC(completedFunc)(auto LEARN_INFO*))
				
			
Parameter
Parameter Necessity Type Input type Introduction
mode Yes BYTE input REMOVE_NODE_ANY - Remove any node from the network
REMOVE_NODE_CONTROLLER - Remove a controller from the network
REMOVE_NODE_SLAVE - Remove a slaev node from the network
REMOVE_NODE_STOP - Stop learn mode without reporting an error
completedFunc Yes Function input Remove Node Step Callback

Sample

				
					
ZW_RemoveNodeFromNetwork(REMOVE_NODE_ANY,RemoveNodeStatusUpdate);;
				
			

8. ZW_SendData

Send data to the device
Function Declaration

				
					BYTE ZW_SendData( BYTE nodeID, BYTE *pData, BYTE dataLength, BYTE txOptions, VOID_CALLBACKFUNC(completedFunc)(BYTE, TX_STATUS_TYPE*))
				
			
Parameter
Parameter Necessity Type Input type Introduction
nodeID Yes BYTE input Destination node ID (0xFF == broadcast)
pData Yes BYTE * input Data buffer pointer
dataLength Yes BYTE input Data buffer length
txOptions Yes BYTE input Transmit option flags
completedFunc Yes function input Transmit completed call back function
nodeID Yes BYTE input Destination node ID (0xFF == broadcast)

Sample

				
					int zwave_class_cmd(unsigned char nid, unsigned char class, unsigned char cmd, char *data, int len, void (*completed)(BYTE x, TX_STATUS_TYPE *status))
{
    char buf[256] = {0};
    buf[0] = class & 0xff;
    buf[1] = cmd & 0xff;
    if (len > 0)
    {
        memcpy(buf + 2, data, len);
    }
    unsigned char options = 0x25;
    void (*f)(BYTE, TX_STATUS_TYPE *) = NULL;
    if (completed == NULL)
    {
        f = zwave_class_cmd_completed;
    }
    else
    {
        f = completed;
    }
    if (ZW_SendData((BYTE)nid, (BYTE *)buf, 2 + len, options, f) == FALSE)
    {
        {
            printf("full tx queue!\n");
            return -1;
        }
        return 0;
    }
				
			
Download this Document
Dusun Gateway Z-wave API

have questions?

Leave a Reply

Related Posts

DSGW 075 1

DSGW-075-tuya Specification

The tuya gateway is developed based on DSGW-070-1, it can be connected to tuya’s ZigBee device. You can control the devices via the gateway with tuya App or smart life App.

Apply For Our Document