| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032 | 
/** *  \file MS_trn_api.h * *  \brief This file defines the Mesh Transport Application Interface - includes *  Data Structures and Methods. *//* *  Copyright (C) 2017. Mindtree Ltd. *  All rights reserved. */#ifndef _H_MS_TRN_API_#define _H_MS_TRN_API_/* --------------------------------------------- Header File Inclusion *//* Lower Transport Layer */#include "MS_ltrn_api.h"extern uint8   cfg_retry_flag;extern void blebrr_scan_pl (UCHAR enable);/* --------------------------------------------- Global Definitions *//** * \defgroup trn_module TRANSPORT (Mesh Transport Layer) * \{ *  This section describes the interfaces & APIs offered by the EtherMind *  Mesh Transport (TRANSPORT) module to the Application and other upper *  layers of the stack. *//** * \defgroup trn_defines Defines * \{ * Describes defines for the module. *//** * \defgroup trn_constants Constants * \{ * Describes Constants defined by the module. *//** * Tranport Layer Control Packet Opcodes * * RFU: 0x02 - 0x0F *//** * Sent by a Low Power node to its Friend node to request any messages * that it has cached for the Low Power node */#define MS_TRN_CTRL_OPCODE_FRND_POLL                    0x01/** * Sent by a Friend node to a Low Power node to inform it about cache * and/or security updates */#define MS_TRN_CTRL_OPCODE_FRND_UPDATE                  0x02/** Broadcast by a Low Power node to start to find a friend */#define MS_TRN_CTRL_OPCODE_FRND_REQ                     0x03/** Sent by a Friend node to a Low Power node to offer to become its friend */#define MS_TRN_CTRL_OPCODE_FRND_OFFER                   0x04/** * Sent to a Friend node to inform a previous friend of a Low Power node * about the removal of a friendship */#define MS_TRN_CTRL_OPCODE_FRND_CLEAR                   0x05/** * Sent from a previous friend to Friend node to confirm that a prior friend * relationship has been removed */#define MS_TRN_CTRL_OPCODE_FRND_CLEAR_CNF               0x06/** * Sent to a Friend node to add one or more addresses * to the Friend Subscription List */#define MS_TRN_CTRL_OPCODE_FRND_SUBSCRN_LIST_ADD        0x07/** * Sent to a Friend node to remove one or more addresses * from the Friend Subscription List */#define MS_TRN_CTRL_OPCODE_FRND_SUBSCRN_LIST_REMOVE     0x08/** Sent by a Friend node to confirm Friend Subscription List updates */#define MS_TRN_CTRL_OPCODE_FRND_SUBSCRN_LIST_CNF        0x09/** Sent by a node to let other nodes determine topology of a Subnet */#define MS_TRN_CTRL_OPCODE_HEARTBEAT                    0x0A/** * Parameter defines for Friendship Opcodes *//** * Friend Update Flags * * Bit 0: Key Refresh Flag *        0: Not-In-Phase2 *        1: In-Phase2 * * Bit 1: IV Update Flag *        0: Normal operation *        1: IV Update active */#define MS_FRNDUPD_FLAG_KEYREF_BIT                      0#define MS_FRNDUPD_FLAG_KEYREF_NOTINPHASE_2             0x00#define MS_FRNDUPD_FLAG_KEYREF_INPHASE_2                0x01#define MS_FRNDUPD_FLAG_IVUPDATE_BIT                    1#define MS_FRNDUPD_FLAG_IVUPDATE_NORMAL                 0x00#define MS_FRNDUPD_FLAG_IVUPDATE_ACTIVE                 0x01/** * Friend Update More Data */#define MS_FRNDUPD_MD_QUEUE_EMPTY                       0x00#define MS_FRNDUPD_MD_QUEUE_NOTEMPTY                    0x01/** * Friend Request Criteria */#define MS_FRNDREQ_RSSIFACTOR_OFFSET                    5#define MS_FRNDREQ_RSSIFACTOR_MASK                      0x60#define MS_FRNDREQ_RSSIFACTOR_1                         0x00#define MS_FRNDREQ_RSSIFACTOR_1_5                       0x01#define MS_FRNDREQ_RSSIFACTOR_2                         0x02#define MS_FRNDREQ_RSSIFACTOR_2_5                       0x03#define MS_FRNDREQ_RCVWINFACTOR_OFFSET                  3#define MS_FRNDREQ_RCVWINFACTOR_MASK                    0x18#define MS_FRNDREQ_RCVWINFACTOR_1                       0x00#define MS_FRNDREQ_RCVWINFACTOR_1_5                     0x01#define MS_FRNDREQ_RCVWINFACTOR_2                       0x02#define MS_FRNDREQ_RCVWINFACTOR_2_5                     0x03#define MS_FRNDREQ_MINQSIZELOG_OFFSET                   0#define MS_FRNDREQ_MINQSIZELOG_MASK                     0x07#define MS_FRNDREQ_MINQSIZE_INVALID                     0x00#define MS_FRNDREQ_MINQSIZE_2                           0x01#define MS_FRNDREQ_MINQSIZE_4                           0x02#define MS_FRNDREQ_MINQSIZE_8                           0x03#define MS_FRNDREQ_MINQSIZE_16                          0x04#define MS_FRNDREQ_MINQSIZE_32                          0x05#define MS_FRNDREQ_MINQSIZE_64                          0x06#define MS_FRNDREQ_MINQSIZE_128                         0x07/** * Heartbeat features */#define MS_HEARTBEAT_FEATURE_RELAY                      (1 << 0)#define MS_HEARTBEAT_FEATURE_PROXY                      (1 << 1)#define MS_HEARTBEAT_FEATURE_FRIEND                     (1 << 2)#define MS_HEARTBEAT_FEATURE_LOWPOWER                   (1 << 3)/** Friendship constants as defined in the specification */#define MS_MIN_FRNDOFFER_DELAY                          100 /* ms */#define MS_TRN_INITIAL_FRNDPOLL_TIMEOUT                 1000 /* ms *//** \} *//** *  \defgroup trn_events Events *  \{ *  This section lists the Asynchronous Events notified to Application by the *  Module. */#define MS_TRN_FRIEND_SETUP_CNF                         0x00#define MS_TRN_FRIEND_SUBSCRNLIST_CNF                   0x01#define MS_TRN_FRIEND_CLEAR_CNF                         0x02#define MS_TRN_FRIEND_TERMINATE_IND                     0x03/** \} *//** \} *//** *  \defgroup trn_marcos Utility Macros *  \{ *  Initialization and other Utility Macros offered by the module. *//** \} *//* --------------------------------------------- Data Types/ Structures *//** *  \addtogroup trn_defines Defines *  \{ *//** *  \addtogroup trn_structures Structures *  \{ *//** \} *//** \} */typedef API_RESULT (*TRN_HEARTBEAT_RCV_CB)        (            MS_NET_ADDR addr,            MS_SUBNET_HANDLE subnet_handle,            UINT8   countlog        ) DECL_REENTRANT;typedef API_RESULT (*TRN_HEARTBEAT_RCV_TIMEOUT_CB)        (            void        ) DECL_REENTRANT;/** *  \defgroup trn_cb Application Callback *  \{ *  This Section Describes the module Notification Callback interface offered *  to the application *//** * TRANSPORT Application Asynchronous Notification Callback. * * TRANSPORT calls the registered callback to indicate events occurred to the * application. * * \param brr_type          Bearer Type. * \param net_hdr           Network Header. * \param subnet_handle     Associated Subnet Handle. * \param appkey_handle     Associated AppKey Handle. * \param data_param        Data associated with the event if any or NULL. * \param data_len          Size of the event data. 0 if event data is NULL. */typedef void (*TRN_NTF_CB)        (            MS_NET_HEADER     * net_hdr,            MS_SUBNET_HANDLE    subnet_handle,            MS_APPKEY_HANDLE    appkey_handle,            UCHAR             * data_param,            UINT16              data_len        ) DECL_REENTRANT;/** * TRANSPORT Application Friendship Asynchronous Notification Callback. * * TRANSPORT calls the registered callback to indicate the status of froednship * setup procedure to the application * * \param subnet_handle     Associated Subnet Handle. * \param event_type        Friendship event. \ref trn_events * \param status            Result of the procedure. */typedef void (*TRN_FRND_CB)        (            MS_SUBNET_HANDLE   subnet_handle,            UCHAR              event_type,            UINT16             status        ) DECL_REENTRANT;/** \} *//** *  \addtogroup trn_defines Defines *  \{ *//** *  \addtogroup trn_structures Structures *  \{ *//** Transport Control Packet Opcode Type */typedef UCHAR   MS_TRN_CTRL_PKT_OPCODE;/** Friend Data Structure */typedef struct _MS_TRN_FRIEND_ENTRY{    /** Friend Seqnece Number - 7 bit value */    UINT8        fsn;    /** Low Power Node Address */    MS_NET_ADDR  addr;    /** Number of Elements in LPN */    UINT8        num_elements;    /** Previous Friend Address */    MS_NET_ADDR  prev_faddr;    /** Friend Queue */    /* UINT32       q; */    /** Subscription List of LPN */    /* UINT32       subscription_list; */} MS_TRN_FRIEND_ENTRY;/** Transport Friend Poll Message */typedef struct _MS_TRN_FRND_POLL_PARAM{    /**     *  Friend Sequence Number used to acknowledge receipt of     *  previous messages from the Friend node to the Low Power node.     */    UINT8 fsn;} MS_TRN_FRND_POLL_PARAM;/** Transport Friend Update Message */typedef struct _MS_TRN_FRND_UPDATE_PARAM{    /** Contains the IV Update Flag and the Key Refresh Flag */    UINT8 flags;    /** The current IV Index value known by the Friend node */    UINT32 ivi;    /**     * Availability of data in friend queue     *     * Value | Description     * ------|------------     *  0    | Friend Queue is empty     *  1    | Friend Queue is not empty     */    UCHAR md;} MS_TRN_FRND_UPDATE_PARAM;/** Transport Friend Request Message */typedef struct _MS_TRN_FRND_REQ_PARAM{    /**     * The criteria that a Friend node should support     * in order to participate in friendship negotiation     */    UCHAR criteria;    /** Receive delay requested by the Low Power node */    UCHAR rx_delay;    /** Poll timeout requested by the Low Power node */    UINT32 poll_to;    /** Previous Friend's unicast address */    UINT16 prev_addr;    /** Number of Elements in the Low Power node */    UCHAR num_elem;    /** Number of Friend Request messages that the Low Power node has sent */    UINT16 lpn_counter;} MS_TRN_FRND_REQ_PARAM;/** Transport Friend Offer Message */typedef struct _MS_TRN_FRND_OFFER_PARAM{    /** Receive Window value supported by the Friend node */    UINT8 rx_window;    /** Queue Size available on the Friend node */    UINT8 queue_size;    /**     * Size of the Subscription List that can be supported     * by a Friend node for a Low Power node     */    UINT8 sublist_size;    /** RSSI measured by the Friend node */    UINT8 rssi;    /** Number of Friend Offer messages that the Friend node has sent */    UINT16 frnd_counter;} MS_TRN_FRND_OFFER_PARAM;/** Transport Friend Clear Message */typedef struct _MS_TRN_FRND_CLEAR_PARAM{    /** The unicast address of the Low Power node being removed */    UINT16 lpn_addr;    /** Value of the LPNCounter of new relationship */    UINT16 lpn_counter;} MS_TRN_FRND_CLEAR_PARAM;/** Transport Friend Clear Confirm Message */typedef struct _MS_TRN_FRND_CLEAR_CNF_PARAM{    /** The unicast address of the Low Power node being removed */    UINT16 lpn_addr;    /** Value of the LPNCounter of corresponding Friend Clear message */    UINT16 lpn_counter;} MS_TRN_FRND_CLEAR_CNF_PARAM;/** Transport Friend Subscription List Add/Remove Message */typedef struct _MS_TRN_FRND_MANAGE_PARAM{    /** The number for identifying a transaction */    UINT8 txn_num;    /**     * List of group addresses and virtual addresses where N is     * the number of group addresses and virtual addresses in this message.     *     * Address octet stream packed in big-endian format.     */    void * addr_list;    /**     * Number of Addresses in the list     *     * Note: Number of addresses is half of the octets in the addr_list field.     */    UINT16   num_addr;    /** Opcode - Add/Delete */    UINT8    opcode;} MS_TRN_FRND_MANAGE_PARAM;/** Transport Friend Subscription List Confirm Message */typedef struct _MS_TRN_FRND_SUBSCRN_LIST_CNF_PARAM{    /** The number for identifying a transaction */    UINT8 txn_num;} MS_TRN_FRND_SUBSCRN_LIST_CNF_PARAM;/** Transport Heartbeat Message */typedef struct _MS_TRN_HEARTBEAT_PARAM{    /** Initial TTL used when sending the message */    UINT8 init_ttl;    /** Bit field of currently active features of the node */    UINT16 features;} MS_TRN_HEARTBEAT_PARAM;/** Low Power Node element information */typedef struct _MS_TRN_FRNDSHIP_INFO{    /* Main subnet handle of the element */    MS_SUBNET_HANDLE subnet_handle;    /* Peer LPN/Friend Address */    MS_NET_ADDR addr;    /* Low Power Node Counter */    UINT16 lpn_counter;    /* Friend Counter - TODO: Should be a global index? */    UINT16 frnd_counter;} MS_TRN_FRNDSHIP_INFO;/* Invalid LPN Handle */#define LPN_HANDLE_INVALID              MS_CONFIG_LIMITS(MS_MAX_LPNS)/** Hearbeat Publication state */typedef struct _MS_TRN_HEARTBEAT_PUBLICATION_INFO{    /**     * Destination address for Heartbeat messages     */    MS_NET_ADDR daddr;    /**     * Count to control the number of periodic heartbeat     * transport messages to be sent     */    UINT8 count_log;    /**     * Period to control the cadence of periodic heartbeat     * transport messages     */    UINT8 period_log;    /**     * TTL value to be used when sending Heartbeat messages     */    UINT8 ttl;    /**     * Features that trigger sending Heartbeat messages when changed     */    UINT16 features;    /**     * Global NetKey index of the NetKey to be used to send Heartbeat messges     */    UINT16 netkey_index;}MS_TRN_HEARTBEAT_PUBLICATION_INFO;/** Hearbeat Subscription state */typedef struct _MS_TRN_HEARTBEAT_SUBSCRIPTION_INFO{    /**     * Source address for Heartbeat messages that a node shall process     */    MS_NET_ADDR saddr;    /**     * Destination address for Heartbeat messages     */    MS_NET_ADDR daddr;    /**     * Counter that tracks the number of periodic heartbeat transport message     * received since receiving the most recent Config Heartbeat Subscription     * Set message     */    UINT8 count_log;    /**     * Period that controls the period for processing periodical Heartbeat     * transport control messages     */    UINT8 period_log;    /**     * Minimum hops value registered when receiving heartbeat messages since     * receiving the most recent Config Heartbeat Subscription Set message     */    UINT16 min_hops;    /**     * Maximum hops value registered when receiving heartbeat messages since     * receiving the most recent Config Heartbeat Subscription Set message     */    UINT16 max_hops;}MS_TRN_HEARTBEAT_SUBSCRIPTION_INFO;/** \} *//** \} *//** TCF (Transport Control Field) - Transport Field Value *//* --------------------------------------------- Function *//** * \defgroup trn_api_defs API Definitions * \{ * This section describes the EtherMind Mesh Transport Layer APIs. */#ifdef __cplusplusextern "C" {#endif/** *  \brief Register Inerface with Transport Layer * *  \par Description *  This routine registers interface with the Transport Layer. *  Transport Layer supports single Application, hence this rouine shall be called once. * *  \param [in] trn_cb *         Upper Layer Notification Callback for specific message type * *  \param [in] msg_type *         Message type (Control or Access) for which the callback to be called. * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_register           (               /* IN */ TRN_NTF_CB        trn_cb,               /* IN */ MS_TRN_MSG_TYPE   msg_type           );API_RESULT MS_trn_heartbeat_register           (               /* IN */ TRN_HEARTBEAT_RCV_CB rcv_cb,               /* IN */ TRN_HEARTBEAT_RCV_TIMEOUT_CB rcv_to_cb           );/** *  \brief API to send Access Layer PDUs * *  \par Description *  This routine sends Access Layer PDUs to peer device. * *  \param [in] src_addr *         Source Address * *  \param [in] dst_addr *         Destination Address * *  \param [in] label *         Lable UUID, represending Virtual Address of Destination * *  \param [in] subnet_handle *         Handle identifying the Subnet * *  \param [in] appkey_handle *         Handle identifying the AppKey to be used for Transport Layer encryption. * *  \param [in] ttl *         Time to Live * *  \param [in] param *         Transport parameter, based on the type and header * *  \param [in] reliable *         If requires lower transport Ack, set reliable as TRUE * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_send_access_pdu           (               /* IN */ MS_NET_ADDR              src_addr,               /* IN */ MS_NET_ADDR              dst_addr,               /* IN */ UINT8                  * label,               /* IN */ MS_SUBNET_HANDLE         subnet_handle,               /* IN */ MS_APPKEY_HANDLE         appkey_handle,               /* IN */ UINT8                    ttl,               /* IN */ void                   * param,               /* IN */ UINT8                    reliable           );/** *  \brief API to send transport Control PDUs * *  \par Description *  This routine sends transport Control PDUs to peer device. * *  \param [in] src_addr *         Source Address * *  \param [in] dst_addr *         Destination Address * *  \param [in] subnet_handle *         Handle identifying the Subnet * *  \param [in] ttl *         Time to Live * *  \param [in] ctrl_opcode *         Control Packet Opcode. * *  \param [in] param *         Transport parameter, based on the type and header * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_send_control_pdu           (               /* IN */ MS_NET_ADDR              src_addr,               /* IN */ MS_NET_ADDR              dst_addr,               /* IN */ MS_SUBNET_HANDLE         subnet_handle,               /* IN */ UINT8                    ttl,               /* IN */ MS_TRN_CTRL_PKT_OPCODE   ctrl_opcode,               /* IN */ void                   * param           );/** *  \brief API to setup Friendship. * *  \par Description *  This routine is used by the device acting as a low power node *  to setup a friendship procedure to any available friend nodes. * *  \param [in] subnet_handle *         The subnet to initiate the friendship procedure. * *  \param [in] criteria *         Friend criteria that is required. RSSI, Receive Window, *         MessageQueue size requirements can be established. * *  \param [in] rx_delay *         Receive delay in milliseconds that the LPN will wait before *         listening to response for any request. * *  \param [in] poll_timeout *         Timeout in milliseconds after which the LPN will send Poll PDU *         to check for data from the friend. * *  \param [in] setup_timeout *         Timeout in milliseconds for which the Friend Establishment *         procedure is to be tried. * *  \param [in] cb *         Application Callback to notify the result of friendship procedures. * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_lpn_setup_friendship           (               /* IN */ MS_SUBNET_HANDLE subnet_handle,               /* IN */ UCHAR criteria,               /* IN */ UCHAR rx_delay,               /* IN */ UINT32 poll_timeout,               /* IN */ UINT32 setup_timeout,               /* IN */ TRN_FRND_CB cb           );/** *  \brief API to terminate friendship. * *  \par Description *  This routine is used by the device acting as a low power node *  terminate friendship with an active Friend node. * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_lpn_clear_friendship(void);/** *  \brief API to manage friend subscription list. * *  \par Description *  This routine is used by the device acting as a low power node *  add/remove addresses to/from the friends subscription list. * *  \param [in] action *         Will be one of MS_TRN_CTRL_OPCODE_FRND_SUBSCRN_LIST_ADD or *         MS_TRN_CTRL_OPCODE_FRND_SUBSCRN_LIST_REMOVE * *  \param [in] addr_list *         Pointer to the packed list of addresses to be managed. * *  \param [in] count *         Number of addresses given. * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_lpn_manage_subscription           (               UCHAR         action,               UINT16       * addr_list,               UINT16        count           );/** *  \brief API to add to friend subscription list. * *  \par Description *  This routine is used by the device acting as a low power node *  add addresses to the friends subscription list. * *  \param [in] addr_list *         Pointer to the list of addresses to be managed. * *  \param [in] count *         Number of addresses given. * *  \return API_SUCCESS or an error code indicating reason for failure */#define MS_trn_lpn_subscrn_list_add(addr_list, count)\        MS_trn_lpn_manage_subscription\        (\            MS_TRN_CTRL_OPCODE_FRND_SUBSCRN_LIST_ADD,\            (addr_list),\            (count)\        );/** *  \brief API to remove from friend subscription list. * *  \par Description *  This routine is used by the device acting as a low power node *  remove addresses from the friends subscription list. * *  \param [in] addr_list *         Pointer to the list of addresses to be managed. * *  \param [in] count *         Number of addresses given. * *  \return API_SUCCESS or an error code indicating reason for failure */#define MS_trn_lpn_subscrn_list_remove(addr_list, count)\        MS_trn_lpn_manage_subscription\        (\            MS_TRN_CTRL_OPCODE_FRND_SUBSCRN_LIST_REMOVE,\            (addr_list),\            (count)\        );/** *  \brief To check if address matches with any of the LPN * *  \par Description *  This routine checks if destination address in a received packet matches *  with any of the known element address of LPN. * *  \param [in]  addr           Unicast Address to search *  \param [out] lpn_handle     LPN Handle on match * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_is_valid_lpn_element_address           (               /* IN */  MS_NET_ADDR     addr,               /* OUT */ LPN_HANDLE    * lpn_handle           );/** *  \brief To check if valid subscription address of an LPN to receive a packet * *  \par Description *  This routine checks if destination address in a received packet matches *  with any of the known subscription address of an LPN. * *  \param [in]  addr          Address to search *  \param [out] lpn_handle    Pointer to an LPN Handle, which will be filled *                             if match found * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_is_valid_lpn_subscription_address           (               /* IN */  MS_NET_ADDR     addr,               /* OUT */ LPN_HANDLE    * lpn_handle           );/** *  \brief To check if valid uicast address of an LPN to receive a packet * *  \par Description *  This routine checks if destination address in a received packet matches *  with any of the known subscription address of an LPN. * *  \param [in]  addr          Address to search *  \param [in] lpn_handle      An LPN Handle, which will be filled *                             if match found * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_is_valid_lpn_uincast_address            (                /* IN */  MS_NET_ADDR     addr,                /* IN */ LPN_HANDLE      lpn_handle            );/** *  \brief To get Poll Timeout of an LPN * *  \par Description *  This routine checks if LPN address is valid and then returns *  Poll Timeout configured for the LPN. * *  \param [in]  lpn_addr        LPN Address to search *  \param [out] poll_timeout    Memory where poll timeout of the LPN to be filled *                               (if match found) * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_get_lpn_polltimeout           (               /* IN */  MS_NET_ADDR    lpn_addr,               /* OUT */ UINT32       * poll_timeout           );/** *  \brief To get the LPN node information * *  \par Description *  This routine fetches the node information of the LPN element at the *  given index * *  \param [in]  role          Local friendship role *  \param [in]  lpn_index     Index of the LPN element *  \param [out] node          Pointer to copy the information * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_get_frndship_info           (               UINT8 role,               UINT16 lpn_index,               MS_TRN_FRNDSHIP_INFO * node           );/** *  \brief To add the security update information * *  \par Description *  This routine updates the security state of the network to all the active *  LPN elements. This will be forwarded to the elements when it polls for the *  next packet available. * *  \param [in] subnet_handle    Handle to identitfy the network. *  \param [in] flag             Flag indicating the Key Refresh and IV Update state. *  \param [in] ivindex          Current IV Index of teh network. * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_lpn_register_security_update           (               /* IN */ MS_SUBNET_HANDLE    subnet_handle,               /* IN */ UCHAR               flag,               /* IN */ UINT32              ivindex           );/** *  \brief To clear information related to all LPNs * *  \par Description *  This routine clears information related to all LPNs. * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_clear_all_lpn           (               void           );/** *  \brief To set the Heartbeat publication data * *  \par Description *  This routine configures the Heartbeat publication information * *  \param [out] info    Heartbeat Publication information data as *                       in \ref MS_TRN_HEARTBEAT_PUBLICATION_INFO * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_set_heartbeat_publication           (               /* INOUT */ MS_TRN_HEARTBEAT_PUBLICATION_INFO * info           );/** *  \brief To get the Heartbeat publication data * *  \par Description *  This routine retrieves the Heartbeat publication information * *  \param [out] info    Heartbeat Publication information data as *                       in \ref MS_TRN_HEARTBEAT_PUBLICATION_INFO * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_get_heartbeat_publication           (               /* OUT */ MS_TRN_HEARTBEAT_PUBLICATION_INFO * info           );/** *  \brief To set the Heartbeat subscription data * *  \par Description *  This routine configures the Heartbeat subscription information * *  \param [in, out] info    Heartbeat Subscription information data as *                           in \ref MS_TRN_HEARTBEAT_SUBSCRIPTION_INFO * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_set_heartbeat_subscription           (               /* INOUT */ MS_TRN_HEARTBEAT_SUBSCRIPTION_INFO * info           );/** *  \brief To get the Heartbeat subscription data * *  \par Description *  This routine retrieves the Heartbeat subscription information * *  \param [out] info    Heartbeat Subscription information data as *                       in \ref MS_TRN_HEARTBEAT_SUBSCRIPTION_INFO * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_get_heartbeat_subscription           (               /* OUT */ MS_TRN_HEARTBEAT_SUBSCRIPTION_INFO * info           );/** *  \brief To trigger Heartbeat send on change in feature * *  \par Description *  This routine triggers the Heartbeat send on change in state of supported *  features. * *  \param [in] change_in_feature_bit    Bit mask of the changed feature field * *  \return API_SUCCESS or an error code indicating reason for failure */API_RESULT MS_trn_trigger_heartbeat (/* IN */ UINT8 change_in_feature_bit);void trn_stop_heartbeat_pub_timer(void);void trn_start_heartbeat_sub_timer(/* IN */ UINT32 timeout);void trn_stop_heartbeat_sub_timer(void);void trn_heartbeat_timer_restart(void);#ifdef __cplusplus};#endif/** \} *//** \} */#endif /* _H_MS_TRN_API_ */
 |