Difference between revisions of "IoTGateway/SDK/NALInterface"

From ESS-WIKI
Jump to: navigation, search
(Structures for Network Interface)
Line 139: Line 139:
 
     void                            *pExtened;
 
     void                            *pExtened;
 
  }SNInterfaceData,_SNInfData;
 
  }SNInterfaceData,_SNInfData;
 +
 +
==Structures for SenHub==

Revision as of 11:11, 26 February 2016

Abstract

The main way WSN API SDK can be extended is to add new "NET" modules into its palette. Customer can follow the general C API, structure, command, event and define ( called "NAL" layer Interface ) to add its own "NET" modules (ex: zigbee, bluetooth... ).

Basic Definition

Definition

MAX_SN_INF_NAME       16  // Max size of Interface's Name
MAX_SN_INF_ID         64  // Max size of Interface's Unique ID
MAX_SN_INF_NUM         8  // Max supports interface number
MAX_SN_COM_NAME       32  // Max size of Communication(Net) Type Name
MAX_SN_UID            64  // Max size of SenHub Unique ID
MAX_SN_HOSTNAME       32  // Max size of SenHub Name
MAX_SN_SNO            32  // Max size of SenHub's Serial Number
MAX_SN_PRODUCT_NAME   32  // Max size of SenHub's Product Name

Callback Event ID

typedef enum {
        // Interface: 1000 ~ 1999
        SN_Inf_UpdateInterface_Data      = 1000,  // Update Interface data from Sensor Network Library  
        SN_Inf_SendInfoSpec              = 1001,  // Update Interface InfoSpec (Capability)	 
        // Sensor Node: 2000 ~ 2999
        SN_SenHub_Register               = 2000,  // Sensor Hub Register
        SN_SenHub_SendInfoSpec           = 2001,  // Update Sensor Hub InfoSpec (Capability)
        SN_SenHub_AutoReportData         = 2002,  // Update Sensor Hub data
        SN_SenHub_Disconnect             = 2003,  // Sensor Hub disconnect
        SN_SetResult                     = 3000,	 
 }SN_EVENT_ID;

Control ID

typedef enum {
        SN_Set_ReportSNManagerDataCbf  = 3000,
        // Get / Set
        SN_Inf_Get                     = 6000,
        SN_Inf_Set                     = 6001,
        SN_SenHub_Get                  = 6020,
        SN_SenHub_Set                  = 6021,
 }SN_CTL_ID;

Return Code

typedef enum {
       SN_ER_NOT_IMPLEMENT             =  -13,   /*	Does Not Support this command       (501) */
       SN_ER_TIMEOUT                   =  -12,   /*	Request Timeout	                    (408) */
       SN_ER_SYS_BUSY                  =  -11,   /*	System is busy                      (503) */
       SN_ER_VALUE_OUT_OF_RNAGE        =  -10,   /*	Value is out of range               (416) */
       SN_ER_SYNTAX_ERROR              =   -9,   /*	Format is correct but syntax error  (422) */
       SN_ER_FORMAT_ERROR              =   -8,   /*	Format error                        (415) */
       SN_ER_REQUEST_ERROR             =   -7,   /*	Request error                       (400) */
       SN_ER_RESOURCE_LOSE             =   -6,   /*	SenHub disconnect                   (410) */
       SN_ER_RESOURCE_LOCKED           =   -5,   /* 	Resource is in setting              (426) */
       SN_ER_NOT_FOUND                 =   -4,   /*	Resource Not Found                  (404) */
       SN_ER_WRITE_ONLY                =   -3,   /*	Read Only                           (405) */
       SN_ER_READ_ONLY                 =   -2,   /*	Write Only                          (405) */
       SN_ER_FAILED                    =   -1,   /*	Failed                              (500) */
       SN_OK                           =    0,   /*	Success	                            (200) */
       SN_INITIALIZED                  =    1,   /*	Library had initialized                   */
 }SN_CODE;

Basic In/Out Data Structure

Input Data Base Structure

typedef struct _InBaseData
{
   char            *psType; // 64 ( reference size )
   int           iSizeType; // Buffer size of psType
   char            *psData; // 2048 ( reference size )
   int           iSizeData; // Buffer size of psData 
   void           *pExtend; // Extend		
 }InBaseData;

Input Data Class Structure

typedef struct _InDataClass
{
   int                iTypeCount;  // Number of Type
   InBaseData  *pInBaseDataArray;  // Point of first BaseInData Array
   void                *pExtened;  // Extend
 }InDataClass;

Output Data Base Structure

typedef struct _OutBaseData
{
   char                  *psType;   // 64  ( reference size )
   int                 iSizeType;   // Buffer size of psType
   char                  *psData;   // 2048  ( reference size ) => If the data length is more than buffer size, user can reallocate this buffer point and re-assign the iSizeData.
   int                *iSizeData;   // Buffer size of psData
   void                 *pExtend;   // Extend
}OutBaseData;
typedef struct _OutDataClass
{
   int                 iTypeCount;  // Number of Type
   OutBaseData *pOutBaseDataArray;  // Point of the first BaseOutData Array
   void                 *pExtened;  // Extend		
}OutDataClass;

Structures for Network Interface

Net Interface's Capability

typedef struct _SNInfInfo
{
   char          sInfName[MAX_SN_INF_NAME];  // Interface Name
   char              sInfID[MAX_SN_INF_ID];  // Unique ID for identify (ex: MAC )
   OutDataClass               outDataClass;  // iTypeCount = 1,   psType: Info, psData:{"n":"SenHubList","sv":"","asm":"r"},{"n":"Topology","sv":"","asm":"r"},{"n":"Health","v":-1,"asm":"r"},
                                                                                       {"n":"Name","sv":"WSN0","asm":"r"}, {"n":"sw","sv":"1.0.0.1","asm":"r"},{"n":"reset","bv":0,"asm":"rw"}
   void                         *pExtened;   // Reserve for use
}SNInfterfaceInfo,SNInfInfo;

Get Multi Net Interfaces' Capability

typedef struct _SNInfInfos
{
    char          sComType[MAX_SN_COM_NAME];  // Communication Type Name
    int                                iNum;  // Number of Sensor Network Interface
    SNInfInfo        SNInfs[MAX_SN_INF_NUM];  // Detail Information of Sensor Network Interface
}SNInterfaceInfos,SNInfInfos,SNMultiInfInfo;

Auto Update Net Interface InfoSpec

typedef struct _SNInterfaceSpec
{
 char         sInfName[MAX_SN_INF_NAME];  // Interface Name
 char             sInfID[MAX_SN_INF_ID];  // Unique ID for identify (ex: 0000+MAC: remove '-' and ':' )
 InDataClass                inDataClass;  // iTypeCount = 1,   psType: Info, psData: {"n":"SenNodeList","sv":"","asm":"r"},{"n":"Topology","sv":"","asm":"r"},
                                                                                     {"n":"Health","v":-1,"asm":"r"},{"n":"Name","sv":"WSN0","asm":"r"},
                                                                                     {"n":"sw","sv":"1.0.0.1","asm":"r"},{"n":"reset","bv":0,"asm":"rw"}
 void                         *pExtened;
}SNInterfaceSpec,SNInfSpec;

Auto Update Multi Net Interfaces InfoSpec

typedef struct _SNMultiInterfaceInfoSpec
{
  char              sComType[MAX_SN_COM_NAME];  // Communication Type Name
  int                                    iNum;  // Number of Sensor Network Interface
  SNInfSpec        aSNInfSpec[MAX_SN_INF_NUM];  // Detail Information of Sensor Network Interface
}SNInterfaceInfoSpec,SNMultiInfInfoSpec;

Auto Updating Sensor Network Interface Data Value

typedef struct _SNInfData
{
   char            sComType[MAX_SN_COM_NAME];  // WSN
   char                sInfID[MAX_SN_INF_ID];  // Unique ID for identify (ex: MAC )
   InDataClass                   inDataClass;  // psType: Info,psData: {"n":"SenHubList","sv": "000EC6F0F830,000EC6F0F831,000EC6F0F832"},
                                                                       {"n": "Neighbor","sv": "000EC6F0F830,000EC6F0F831"},{"n": "Health","v": 90},
                                                                       {"n":"sw","sv":"1.0.0.1"},{"n":"reset","bv":0}
   void                            *pExtened;
}SNInterfaceData,_SNInfData;

Structures for SenHub