Sergio Scaglia / Nanostack_lib

Dependents:   mbedEndpointNetwork mbedEndpointNetworkMJK

Fork of Nanostack_lib by Sensinode

Committer:
sscaglia
Date:
Tue Jul 15 02:52:09 2014 +0000
Revision:
14:b486fa9e70a7
Parent:
12:acef6f596835
Initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mika Karjalainen 4:c449bead5cf3 1 /**
Mika Karjalainen 4:c449bead5cf3 2 * \file pana_nvm_api.h
Mika Karjalainen 4:c449bead5cf3 3 * \brief ZigBeeIP Library Pana NVM API for Client and Server.
Mika Karjalainen 4:c449bead5cf3 4 *
Mika Karjalainen 4:c449bead5cf3 5 * \section server-api Server NVM API
Mika Karjalainen 4:c449bead5cf3 6 *
Mika Karjalainen 4:c449bead5cf3 7 * Pana Server Security material is crypted always and if you change border router RF module
Mika Karjalainen 4:c449bead5cf3 8 * decrypt does not work properly.
Mika Karjalainen 4:c449bead5cf3 9 *
Mika Karjalainen 4:c449bead5cf3 10 * - pana_server_nvm_callback_set(), Init Pana Server NVM functionality
Mika Karjalainen 4:c449bead5cf3 11 * - pana_server_restore_from_nvm(), Load crypted Pana server base and security material from NVM
Mika Karjalainen 4:c449bead5cf3 12 * - pana_server_nvm_client_session_load(), Load crypted Client session from NVM
Mika Karjalainen 4:c449bead5cf3 13 *
Mika Karjalainen 4:c449bead5cf3 14 * \section client-api Client NVM API
Mika Karjalainen 4:c449bead5cf3 15 *
Mika Karjalainen 4:c449bead5cf3 16 * nw_nvm.c use already this API and Application can just use net_nvm_api.h.
Mika Karjalainen 4:c449bead5cf3 17 *
Mika Karjalainen 4:c449bead5cf3 18 * - pana_client_nvm_callback_set(), Init Pana session NVM
Mika Karjalainen 4:c449bead5cf3 19 * - net_read_persistent_data(), Read NWK ID & MAC 16-bit Address
Mika Karjalainen 4:c449bead5cf3 20 * - net_nvm_data_load(), Load Pana session, NWK-ID and short address to stack for re-use.
Mika Karjalainen 4:c449bead5cf3 21 *
Mika Karjalainen 4:c449bead5cf3 22 */
Mika Karjalainen 4:c449bead5cf3 23 #ifndef PANA_NVM_API_H_
Mika Karjalainen 4:c449bead5cf3 24 #define PANA_NVM_API_H_
Mika Karjalainen 12:acef6f596835 25 #ifdef __cplusplus
jusu_81 11:1b7aaf37a131 26 extern "C" {
jusu_81 11:1b7aaf37a131 27 #endif
Mika Karjalainen 4:c449bead5cf3 28 /*!
Mika Karjalainen 4:c449bead5cf3 29 * \enum pana_nvm_update_process_t
Mika Karjalainen 4:c449bead5cf3 30 * \brief Pana Server NVM update states.
Mika Karjalainen 4:c449bead5cf3 31 */
Mika Karjalainen 4:c449bead5cf3 32 typedef enum pana_nvm_update_process_t
Mika Karjalainen 4:c449bead5cf3 33 {
Mika Karjalainen 4:c449bead5cf3 34 PANA_SERVER_MATERIAL_UPDATE, /**< Pana Server Security Material Update */
Mika Karjalainen 4:c449bead5cf3 35 PANA_SERVER_CLIENT_SESSION_UPDATE, /**< Pana Client Session Update */
Mika Karjalainen 4:c449bead5cf3 36 PANA_SERVER_CLIENT_SESSION_SEQ_UPDATE, /**< Pana Client Session Sequence number Update */
Mika Karjalainen 4:c449bead5cf3 37 PANA_SERVER_CLIENT_SESSION_REMOVE_UPDATE, /**< Pana Client Session remove */
Mika Karjalainen 4:c449bead5cf3 38 }pana_nvm_update_process_t;
Mika Karjalainen 4:c449bead5cf3 39
Mika Karjalainen 4:c449bead5cf3 40 /*!
Mika Karjalainen 4:c449bead5cf3 41 * \enum pana_client_nvm_update_process_t
Mika Karjalainen 4:c449bead5cf3 42 * \brief Pana Client NVM update states.
Mika Karjalainen 4:c449bead5cf3 43 */
Mika Karjalainen 4:c449bead5cf3 44 typedef enum pana_client_nvm_update_process_t
Mika Karjalainen 4:c449bead5cf3 45 {
Mika Karjalainen 4:c449bead5cf3 46 PANA_CLIENT_SESSION_UPDATE, /**< Pana Session information Fully Update */
Mika Karjalainen 4:c449bead5cf3 47 PANA_CLIENT_SESSION_SEQ_UPDATE, /**< Pana key Pull or Push Operation update REQ and RES sequence number */
Mika Karjalainen 4:c449bead5cf3 48 }pana_client_nvm_update_process_t;
Mika Karjalainen 4:c449bead5cf3 49
Mika Karjalainen 4:c449bead5cf3 50 /* NVM API PART */
Mika Karjalainen 4:c449bead5cf3 51 /**
Mika Karjalainen 4:c449bead5cf3 52 * \brief Pana Server NVM functionality init
Mika Karjalainen 4:c449bead5cf3 53 *
Mika Karjalainen 4:c449bead5cf3 54 * \param passed_fptr function pointer to NVM update process
Mika Karjalainen 4:c449bead5cf3 55 * \param nvm_static_buffer pointer to Application allocated static memory, Needed minimal size is 115 bytes
Mika Karjalainen 4:c449bead5cf3 56 *
Mika Karjalainen 4:c449bead5cf3 57 *
Mika Karjalainen 4:c449bead5cf3 58 * Reference Callback function structure which use EEPROM:
Mika Karjalainen 4:c449bead5cf3 59 * - nvm_static_buffer is application is allocated static buffer
Mika Karjalainen 4:c449bead5cf3 60 *
Mika Karjalainen 4:c449bead5cf3 61 * \return 0, Init OK
Mika Karjalainen 4:c449bead5cf3 62 * \return -1, Null parameter detect
Mika Karjalainen 4:c449bead5cf3 63 *
Mika Karjalainen 4:c449bead5cf3 64 */
Mika Karjalainen 4:c449bead5cf3 65 extern int8_t pana_server_nvm_callback_set(uint16_t (*passed_fptr)(pana_nvm_update_process_t), uint8_t * nvm_static_buffer);
Mika Karjalainen 4:c449bead5cf3 66 /**
Mika Karjalainen 4:c449bead5cf3 67 * \brief Pana Server Base restore form NVM
Mika Karjalainen 4:c449bead5cf3 68 *
Mika Karjalainen 4:c449bead5cf3 69 * \param nvm_data pointer to Crypted Pana server base data
Mika Karjalainen 4:c449bead5cf3 70 *
Mika Karjalainen 4:c449bead5cf3 71 * \return 0, Restore OK
Mika Karjalainen 4:c449bead5cf3 72 * \return -1, Memory Allocation fail
Mika Karjalainen 4:c449bead5cf3 73 *
Mika Karjalainen 4:c449bead5cf3 74 */
Mika Karjalainen 4:c449bead5cf3 75 extern int8_t pana_server_restore_from_nvm(uint8_t * nvm_data, int8_t interface_id);
Mika Karjalainen 4:c449bead5cf3 76 /**
Mika Karjalainen 4:c449bead5cf3 77 * \brief Pana Client session load from NVM API
Mika Karjalainen 4:c449bead5cf3 78 *
Mika Karjalainen 4:c449bead5cf3 79 * \param nvm_data pointer to Crypted Pana client session
Mika Karjalainen 4:c449bead5cf3 80 *
Mika Karjalainen 4:c449bead5cf3 81 * \return 0, Restore OK
Mika Karjalainen 4:c449bead5cf3 82 * \return -1, Memory Allocation fail
Mika Karjalainen 4:c449bead5cf3 83 *
Mika Karjalainen 4:c449bead5cf3 84 */
Mika Karjalainen 4:c449bead5cf3 85 extern int8_t pana_server_nvm_client_session_load(uint8_t *nvm_pointer);
Mika Karjalainen 4:c449bead5cf3 86
Mika Karjalainen 4:c449bead5cf3 87 /**
Mika Karjalainen 4:c449bead5cf3 88 * \brief Pana Client NVM functionality init
Mika Karjalainen 4:c449bead5cf3 89 *
Mika Karjalainen 4:c449bead5cf3 90 * \param passed_fptr function pointer to NVM update process
Mika Karjalainen 4:c449bead5cf3 91 * \param nvm_static_buffer pointer to Application allocated static memory, Needed minimal size is 88 bytes
Mika Karjalainen 4:c449bead5cf3 92 *
Mika Karjalainen 4:c449bead5cf3 93 * Reference Callback function structure which use EEPROM:
Mika Karjalainen 4:c449bead5cf3 94 * - nvm_static_buffer is application is allocated static buffer
Mika Karjalainen 4:c449bead5cf3 95 *
Mika Karjalainen 4:c449bead5cf3 96 * \return 0, Init OK
Mika Karjalainen 4:c449bead5cf3 97 * \return -1, Null parameter detect
Mika Karjalainen 4:c449bead5cf3 98 *
Mika Karjalainen 4:c449bead5cf3 99 */
Mika Karjalainen 4:c449bead5cf3 100 extern int8_t pana_client_nvm_callback_set(void (*passed_fptr)(pana_client_nvm_update_process_t), uint8_t * nvm_static_buffer);
Mika Karjalainen 4:c449bead5cf3 101 /**
Mika Karjalainen 4:c449bead5cf3 102 * \brief Read Network persistent data
Mika Karjalainen 4:c449bead5cf3 103 *
Mika Karjalainen 4:c449bead5cf3 104 * \param data_buffer pointer to where stack save 18 bytes [NWK-ID 16bytes, Short Address 2bytes]
Mika Karjalainen 4:c449bead5cf3 105 *
Mika Karjalainen 4:c449bead5cf3 106 *
Mika Karjalainen 4:c449bead5cf3 107 * \return 0, Read OK
Mika Karjalainen 4:c449bead5cf3 108 * \return -1, Null parameter detect
Mika Karjalainen 4:c449bead5cf3 109 * \return -2 Bootstrap not ready yet
Mika Karjalainen 4:c449bead5cf3 110 *
Mika Karjalainen 4:c449bead5cf3 111 * This function should call when network bootstrap is ready.
Mika Karjalainen 4:c449bead5cf3 112 *
Mika Karjalainen 4:c449bead5cf3 113 */
Mika Karjalainen 4:c449bead5cf3 114 extern int8_t net_read_persistent_data(uint8_t *data_buffer, int8_t interface_id);
Mika Karjalainen 4:c449bead5cf3 115 /**
Mika Karjalainen 4:c449bead5cf3 116 * \brief Load ZigBeeIP node persistent data to stack for re-use
Mika Karjalainen 4:c449bead5cf3 117 *
Mika Karjalainen 4:c449bead5cf3 118 * \param data_buffer pointer to data which should include 88 bytes[NWK-ID 16bytes, Short Address 2bytes, Pana 70 bytes]
Mika Karjalainen 4:c449bead5cf3 119 *
Mika Karjalainen 4:c449bead5cf3 120 *
Mika Karjalainen 4:c449bead5cf3 121 * \return 0, Read OK
Mika Karjalainen 4:c449bead5cf3 122 * \return -1, Null parameter detect
Mika Karjalainen 4:c449bead5cf3 123 * \return -2, Stack is active
Mika Karjalainen 4:c449bead5cf3 124 * \return <-2 Memory allocation fail
Mika Karjalainen 4:c449bead5cf3 125 *
Mika Karjalainen 4:c449bead5cf3 126 */
Mika Karjalainen 4:c449bead5cf3 127 extern int8_t net_nvm_data_load(uint8_t *data_buffer, int8_t interface_id);
Mika Karjalainen 4:c449bead5cf3 128 /**
Mika Karjalainen 4:c449bead5cf3 129 * \brief Clean ZigBeeIP node persistent data from stack
Mika Karjalainen 4:c449bead5cf3 130 *
Mika Karjalainen 4:c449bead5cf3 131 * Function disable Network ID filter, set EUID-16 to 0xffff and remove Pana client session. Function is only for client purpose.
Mika Karjalainen 4:c449bead5cf3 132 *
Mika Karjalainen 4:c449bead5cf3 133 *
Mika Karjalainen 4:c449bead5cf3 134 * \return 0, Clean OK
Mika Karjalainen 4:c449bead5cf3 135 * \return -1, Stack is active
Mika Karjalainen 4:c449bead5cf3 136 *
Mika Karjalainen 4:c449bead5cf3 137 */
Mika Karjalainen 4:c449bead5cf3 138 extern int8_t net_nvm_data_clean(int8_t interface_id);
jusu_81 11:1b7aaf37a131 139 #ifdef __cplusplus
jusu_81 11:1b7aaf37a131 140 }
jusu_81 11:1b7aaf37a131 141 #endif
Mika Karjalainen 4:c449bead5cf3 142 #endif /* PANA_NVM_API_H_ */