123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810 |
- /**
- * \file MS_prov_api.h
- *
- * \brief This file defines the Mesh Provisioning Application Interface - includes
- * Data Structures and Methods.
- */
- /*
- * Copyright (C) 2017. Mindtree Ltd.
- * All rights reserved.
- */
- #ifndef _H_MS_PROV_API_
- #define _H_MS_PROV_API_
- /* --------------------------------------------- Header File Inclusion */
- /* Bearer Layer */
- #include "MS_brr_api.h"
- /* --------------------------------------------- Global Definitions */
- /**
- * \defgroup prov_module PROVISIONING (Mesh Provisioning Layer)
- * \{
- * This section describes the interfaces & APIs offered by the EtherMind
- * Mesh Provisioning module to the Application and other upper
- * layers of the stack.
- */
- /**
- * \defgroup prov_defines Defines
- * \{
- * Describes defines for the module.
- */
- /**
- * \defgroup prov_constants Constants
- * \{
- * Describes Constants defined by the module.
- */
- /** Provisiong Roles */
- #define PROV_ROLE_DEVICE 0x01
- #define PROV_ROLE_PROVISIONER 0x02
- /** Provisioning Bearer Types */
- #define PROV_BRR_ADV 0x01
- #define PROV_BRR_GATT 0x02
- /** Provisioning PDU Types */
- #define PROV_PDU_TYPE_INVITE 0x00
- #define PROV_PDU_TYPE_CAPAB 0x01
- #define PROV_PDU_TYPE_START 0x02
- #define PROV_PDU_TYPE_PUBKEY 0x03
- #define PROV_PDU_TYPE_INPUT_CMPLT 0x04
- #define PROV_PDU_TYPE_CONF 0x05
- #define PROV_PDU_TYPE_RAND 0x06
- #define PROV_PDU_TYPE_DATA 0x07
- #define PROV_PDU_TYPE_COMPLETE 0x08
- #define PROV_PDU_TYPE_FAILED 0x09
- /** Provisioning algorithm values */
- #define PROV_ALGO_EC_FIPS_P256 0x00
- /** Provisioning public key values */
- #define PROV_PUBKEY_NO_OOB 0x00
- #define PROV_PUBKEY_OOB 0x01
- /** Provisioning authentication method values */
- #define PROV_AUTH_OOB_NONE 0x00
- #define PROV_AUTH_OOB_STATIC 0x01
- #define PROV_AUTH_OOB_OUTPUT 0x02
- #define PROV_AUTH_OOB_INPUT 0x03
- /** Provisioning Output OOB action values */
- #define PROV_OOOB_ACTION_BLINK 0x00
- #define PROV_OOOB_ACTION_BEEP 0x01
- #define PROV_OOOB_ACTION_VIBRATE 0x02
- #define PROV_OOOB_ACTION_NUMERIC 0x03
- #define PROV_OOOB_ACTION_ALPHANUMERIC 0x04
- /** Provisioning Input OOB action values */
- #define PROV_IOOB_ACTION_PUSH 0x00
- #define PROV_IOOB_ACTION_TWIST 0x01
- #define PROV_IOOB_ACTION_NUMERIC 0x02
- #define PROV_IOOB_ACTION_ALPHANUMERIC 0x03
- /** Provisioning algorithm support masks */
- #define PROV_MASK_ALGO_EC_FIPS_P256 (1 << 0)
- /** Provisioning public key supported type masks */
- #define PROV_MASK_PUBKEY_OOBINFO (1 << 0)
- /** Provisioning static oob supported type masks */
- #define PROV_MASK_STATIC_OOBINFO (1 << 0)
- /** Output OOB actions supported masks */
- #define PROV_MASK_OOOB_ACTION_BLINK (1 << 0)
- #define PROV_MASK_OOOB_ACTION_BEEP (1 << 1)
- #define PROV_MASK_OOOB_ACTION_VIBRATE (1 << 2)
- #define PROV_MASK_OOOB_ACTION_NUMERIC (1 << 3)
- #define PROV_MASK_OOOB_ACTION_ALPHANUMERIC (1 << 4)
- /** Input OOB actions supported masks */
- #define PROV_MASK_IOOB_ACTION_PUSH (1 << 0)
- #define PROV_MASK_IOOB_ACTION_TWIST (1 << 1)
- #define PROV_MASK_IOOB_ACTION_NUMERIC (1 << 2)
- #define PROV_MASK_IOOB_ACTION_ALPHANUMERIC (1 << 3)
- /**
- * \defgroup prov_control Control Constants
- * \{
- * Control constants defined by the specification.
- */
- /** Number of Fragments - Start of New Transaction */
- #define PROV_PCF_NUM_FRGMNTS 0x00
- /** Control Message */
- #define PROV_PCF_CTRL_MSG 0x01
- /** Fragment Index - Continuation of a transaction */
- #define PROV_PCF_CONTINU_FRGMNT 0x02
- /** Transport Specific Messaging (only used by PB ADV) */
- #define PROV_PCF_TX_SPECIFIC 0x03
- /** \} */
- /**
- * \defgroup prov_advtxopcodes ADV Transport Opcodes
- * \{
- * Specification defined transport Opcodes for PB-ADV bearer.
- */
- /* Link Open Request */
- #define PROV_PB_ADV_OPEN_REQ 0x00
- /* Link Open Confirm */
- #define PROV_PB_ADV_OPEN_CNF 0x01
- /* Link Close Indication */
- #define PROV_PB_ADV_CLOSE_IND 0x02
- /** \} */
- /**
- * \defgroup prov_gatttxopcodes GATT Transport Opcodes
- * \{
- * Implementation specific transport Opcodes for PB-GATT bearer.
- */
- /* Link Open Indication */
- #define PROV_PB_GATT_OPEN_IND 0xF1
- /* Link Close Indication */
- #define PROV_PB_GATT_CLOSE_IND 0xF0
- /** \} */
- /**
- * \defgroup prov_errorcode Error Codes
- * \{
- * Describes Error Codes defined by the specification.
- */
- /** Provisioning Failure Error Codes */
- #define PROV_ERR_PROHIBITED 0x00
- #define PROV_ERR_INVALID_PDU 0x01
- #define PROV_ERR_INVALID_FORMAT 0x02
- #define PROV_ERR_UNEXPECTED_PDU 0x03
- #define PROV_ERR_CONFIRMATION_FAILED 0x04
- #define PROV_ERR_OUT_OF_RESOURCES 0x05
- #define PROV_ERR_DECRYPTION_FAILED 0x06
- #define PROV_ERR_UNEXPECTED_ERROR 0x07
- #define PROV_ERR_CANNOT_ASSIGN_ADDRESS 0x08
- /** Provisioning LinkClose Error codes */
- #define PROV_CLOSE_REASON_SUCCESS 0x00
- #define PROV_CLOSE_REASON_TIMEOUT 0x01
- #define PROV_CLOSE_REASON_FAIL 0x02
- /** \} */
- /** Provisioning array size requirements */
- #define PROV_KEY_NETKEY_SIZE 16
- #define PROV_OOB_VALUE_SIZE 16
- #define PROV_URI_HASH_SIZE 4
- /** Provisioning OOB type masks for ADV data */
- #define PROV_OOB_TYPE_OTHER (1 << 0)
- #define PROV_OOB_TYPE_URI (1 << 1)
- #define PROV_OOB_TYPE_2DMRC (1 << 2)
- #define PROV_OOB_TYPE_BARCODE (1 << 3)
- #define PROV_OOB_TYPE_NFC (1 << 4)
- #define PROV_OOB_TYPE_NUMBER (1 << 5)
- #define PROV_OOB_TYPE_STRING (1 << 6)
- #define PROV_OOB_TYPE_ONBOX (1 << 11)
- #define PROV_OOB_TYPE_INSIDEBOX (1 << 12)
- #define PROV_OOB_TYPE_ONPIECEOFPAPER (1 << 13)
- #define PROV_OOB_TYPE_INSIDEMANUAL (1 << 14)
- #define PROV_OOB_TYPE_ONDEVICE (1 << 15)
- /** Invalid Provisioning Handle */
- #define PROV_HANDLE_INVALID 0xFF
- /** \} */
- /**
- * \defgroup prov_events Events
- * \{
- * This section lists the Asynchronous Events notified to Application by the
- * Module.
- */
- /**
- * This event indicates the availability of an unprovisioned device beacon,
- * with the following values as parameters in the
- * \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_UNPROVISIONED_BEACON.
- * \param [in] event_result \ref API_SUCCESS.
- * \param [in] event_data Pointer to the array with the UUID of the device.
- * \param [in] event_datalen MS_DEVICE_UUID_SIZE
- *
- * \note This event is received by the Provisioner application. On reception of
- * this event, the application shall make use of the MS_prov_bind() to initiate
- * the provisioning procedure.
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_UNPROVISIONED_BEACON 0x01
- /**
- * This event indicates that the provisioning procedure capability exchange is
- * complete, with the following values as parameters in the
- * \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_PROVISIONING_SETUP.
- * \param [in] event_result \ref API_SUCCESS on successful procedure completion, else
- * an Error Code.
- * \param [in] event_data When local provisioner, this contains peer device
- * capabilities and when local device, this contains the attention timeout
- * value.
- * \param [in] event_datalen When local provisioner, sizeof(\ref
- * PROV_CAPABILITIES_S) and when local device, sizeof(UINT32).
- *
- * \note When local provisioner, the appliation shall select the required
- * capability from the received capabilities and choose to start the procedure
- * by calling \ref MS_prov_start().
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_PROVISIONING_SETUP 0x02
- /**
- * This event indicates to the application the OOB random data that is to be
- * displayed on the UI via the \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_OOB_DISPLAY.
- * \param [in] event_result \ref API_SUCCESS on successful procedure completion, else
- * an Error Code.
- * \param [in] event_data Pointer to OOB information as in \ref PROV_OOB_TYPE_S.
- * \param [in] event_datalen sizeof (\ref PROV_OOB_TYPE_S).
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_OOB_DISPLAY 0x03
- /**
- * This event indicates to the application requesting for OOB random data that
- * is to be used in the procedure via the \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_OOB_ENTRY.
- * \param [in] event_result \ref API_SUCCESS on successful procedure completion, else
- * an Error Code.
- * \param [in] event_data \ref Pointer to OOB information as in \ref PROV_OOB_TYPE_S.
- * \param [in] event_datalen sizeof (\ref PROV_OOB_TYPE_S).
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_OOB_ENTRY 0x04
- /**
- * This event indicates to the application that the peer device has completed the
- * Input of OOB when this capability is negotiated via the
- * \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_DEVINPUT_COMPLETE.
- * \param [in] event_result \ref API_SUCCESS on successful procedure completion, else
- * an Error Code.
- * \param [in] event_data NULL.
- * \param [in] event_datalen 0.
- *
- * \note This event is generated only for the provisioner application.
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_DEVINPUT_COMPLETE 0x05
- /**
- * This event indicates to the application requesting for Provisional data to be
- * sent to the peer device via the \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_PROVDATA_INFO_REQ.
- * \param [in] event_result \ref API_SUCCESS on successful procedure completion, else
- * an Error Code.
- * \param [in] event_data NULL.
- * \param [in] event_datalen 0.
- *
- * \note This event is generated only for the provisioner application.
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_PROVDATA_INFO_REQ 0x06
- /**
- * This event indicates to the application the Provisional data received
- * from the Provisioner via the \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_PROVDATA_INFO.
- * \param [in] event_result \ref API_SUCCESS on successful procedure completion, else
- * an Error Code.
- * \param [in] event_data Pointer to the provisioning data \ref PROV_DATA_S.
- * \param [in] event_datalen sizeof(\ref PROV_DATA_S).
- *
- * \note This event is generated only for the device application.
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_PROVDATA_INFO 0x07
- /**
- * This event indicates to the application that the provisioning procedure
- * is complete via the \ref PROV_UI_NOTIFY_CB callback.
- *
- * \param [in] phandle Pointer to the Provisioning context handle
- * \param [in] event_type \ref PROV_EVT_PROVISIONING_COMPLETE.
- * \param [in] event_result \ref API_SUCCESS on successful procedure completion, else
- * an Error Code.
- * \param [in] event_data NULL.
- * \param [in] event_datalen 0.
- *
- * \return \ref API_SUCCESS (always)
- */
- #define PROV_EVT_PROVISIONING_COMPLETE 0x08
- /** \} */
- /** \} */
- /* --------------------------------------------- Structures/Data Types */
- /**
- * \addtogroup prov_defines Defines
- * \{
- */
- /**
- * \defgroup prov_structures Structures
- * \{
- */
- /** Role of the device */
- typedef UCHAR PROV_ROLE;
- /** Bearer for the provisioning session */
- typedef UCHAR PROV_BRR;
- /** Handle to reference the active provisioning context */
- typedef UCHAR PROV_HANDLE;
- /** Device Information used for Provisioning */
- typedef struct _PROV_DEVICE_S
- {
- /**
- * Device UUID -
- * Used in unprovisioned device beacon and Provisioning Invite
- */
- UCHAR uuid[MS_DEVICE_UUID_SIZE];
- /** OOB Information */
- UINT16 oob;
- /** URI if any, to be given in encoded form */
- MS_BUFFER * uri;
- } PROV_DEVICE_S;
- /** OOB type for provisioning */
- typedef struct _PROV_OOB_TYPE_S
- {
- /** OOB Action information */
- UINT16 action;
- /** OOB Size information */
- UCHAR size;
- } PROV_OOB_TYPE_S;
- /** Device capabilities used for Provisioning */
- typedef struct _PROV_CAPABILITIES_S
- {
- /** Number of Elements */
- UCHAR num_elements;
- /** Supported algorithms */
- UINT16 supp_algorithms;
- /** Public key type */
- UCHAR supp_pubkey;
- /** Static OOB type */
- UCHAR supp_soob;
- /** Output OOB information */
- PROV_OOB_TYPE_S ooob;
- /** Input OOB information */
- PROV_OOB_TYPE_S ioob;
- } PROV_CAPABILITIES_S;
- /** Provisioning method information */
- typedef struct _PROV_METHOD_S
- {
- /** Algorithm selected */
- UCHAR algorithm;
- /** Public key usage */
- UCHAR pubkey;
- /** Authentication type */
- UCHAR auth;
- /** OOB type */
- PROV_OOB_TYPE_S oob;
- } PROV_METHOD_S;
- /** Data exchanged during Provisiong procedure */
- typedef struct _PROV_DATA_S
- {
- /** NetKey */
- UCHAR netkey[PROV_KEY_NETKEY_SIZE];
- /** Index of the NetKey */
- UINT16 keyid;
- /**
- * Flags bitmask
- * bit 0: Key Refresh Flag.
- * 0: Not-In-Phase2
- * 1: In-Phase2
- * bit 1: IV Update Flag
- * 0: Normal operation
- * 1: IV Update active
- *
- * bits 2-7: RFU
- */
- UCHAR flags;
- /** Current value of the IV index */
- UINT32 ivindex;
- /** Unicast address of the primary element */
- UINT16 uaddr;
- } PROV_DATA_S;
- /** \} */
- /** \} */
- /**
- * \defgroup prov_cb Application Callback
- * \{
- * This Section Describes the module Notification Callback interface offered
- * to the application
- */
- /**
- * Provisioning Application Asynchronous Notification Callback.
- *
- * Provisioning calls the registered callback to indicate events occurred to the
- * application.
- *
- * \param phandle Handle that identifies the provisioning context.
- * \param event_type Event type from any of the events in \ref prov_events.
- * \param event_result API_SUCCESS or any error code.
- * \param event_data Data associated with the event if any or NULL.
- * \param event_datalen Size of the event data. 0 if event data is NULL.
- */
- typedef API_RESULT (* PROV_UI_NOTIFY_CB)
- (
- PROV_HANDLE * phandle,
- UCHAR event_type,
- API_RESULT event_result,
- void * event_data,
- UINT16 event_datalen
- );
- /** \} */
- /* --------------------------------------------- Macros */
- /**
- * \defgroup prov_marcos Utility Macros
- * \{
- * Initialization and other Utility Macros offered by the module.
- */
- /**
- * \brief Setup the Device for provisioning
- *
- * \par Description This function configures the application as an Unprovisioned
- * device over Advertising channel bearer and sets it ready for provisioning.
- *
- * \param [in] pdev Pointer to the device strcuture \ref PROV_DEVICE_S.
- * \param [in] tmo The setup timeout value
- * \param [out] phdl The handle to the context setup on successful allocation
- *
- * \return API_SUCCESS or Error Code on failure
- */
- #define MS_prov_setup_device_pbadv(pdev, tmo, phdl) \
- MS_prov_setup (PROV_ROLE_DEVICE, PROV_BRR_ADV, (pdev), (tmo), (phdl))
- /**
- * \brief Setup the Provisioner for provisioning
- *
- * \par Description This function configures the application as a Provisioner
- * over Advertising channel bearer and sets it ready for provisioning.
- *
- * \param [in] tmo The setup timeout value
- * \param [out] phdl The handle to the context setup on successful allocation
- *
- * \return API_SUCCESS or Error Code on failure
- */
- #define MS_prov_setup_provisioner_pbadv(tmo, phdl) \
- MS_prov_setup (PROV_ROLE_PROVISIONER, PROV_BRR_ADV, NULL, (tmo), (phdl))
- /**
- * \brief Setup the device for provisioning
- *
- * \par Description This function configures the application as an Unprovisioned
- * device over GATT channel bearer and sets it ready for provisioning.
- *
- * \param [in] pdev Pointer to the device strcuture \ref PROV_DEVICE_S.
- * \param [in] tmo The setup timeout value
- * \param [out] phdl The handle to the context setup on successful allocation
- *
- * \return API_SUCCESS or Error Code on failure
- */
- #define MS_prov_setup_device_pbgatt(pdev, tmo, phdl) \
- MS_prov_setup (PROV_ROLE_DEVICE, PROV_BRR_GATT, (pdev), (tmo), (phdl))
- /**
- * \brief Setup the Provisioner for provisioning
- *
- * \par Description This function configures the application as a Provisioner
- * over GATT channel bearer and sets it ready for provisioning.
- *
- * \param [in] tmo The setup timeout value
- * \param [out] phdl The handle to the context setup on successful allocation
- *
- * \return API_SUCCESS or Error Code on failure
- */
- #define MS_prov_setup_provisioner_pbgatt(tmo, phdl) \
- MS_prov_setup (PROV_ROLE_PROVISIONER, PROV_BRR_GATT, NULL, (tmo), (phdl))
- /**
- * \brief Start Provisioning on the select set of device capabilities.
- *
- * \par Description This function is used by the provisioner application to start
- * the procedure using the selected set of capabilities of the unprovisioned
- * device.
- *
- * \param [in] phandle Provisioning context to be used.
- * \param [in] pmethod Pointer to the structure with selected method.
- *
- * \note This API will be used by the provisioner only, in response to the
- * \ref PROV_EVT_PROVISIONING_SETUP event
- *
- * \return API_SUCCESS or Error Code on failure
- */
- #define MS_prov_start(phandle, pmethod) \
- MS_prov_send_pdu ((phandle), PROV_PDU_TYPE_START, (pmethod), sizeof(PROV_METHOD_S))
- /**
- * \brief Input Authentication value from Device/Provisioner application.
- *
- * \par Description This function is used to receive the Authval from the
- * application and use it for the algorithm. When the application is that of a
- * device, it also sends the input complete message to the provisioner in the
- * given context.
- *
- * \param [in] phandle Provisioning context to be used.
- * \param [in] pauth Authentication Value (UINT32 *) or (UCHAR *)
- * \param [in] size Size of pauth
- *
- * \note This API will be used in response to the
- * \ref PROV_EVT_OOB_ENTRY event
- *
- * \return API_SUCCESS or Error Code on failure
- */
- #define MS_prov_input_authval(phandle, pauth, size) \
- MS_prov_send_pdu ((phandle), PROV_PDU_TYPE_INPUT_CMPLT, (pauth), (size))
- /**
- * \brief Send provisioning data to the device.
- *
- * \par Description This function is used by the provisioning application to send
- * the provisioning data to the device after authentication is complete.
- *
- * \param [in] phandle Provisioning context to be used.
- * \param [in] pdata Pointer to the Provisioning data structre as in \ref
- * PROV_DATA_S
- *
- * \note This API will be used by the provisioner only, in response to the
- * \ref PROV_EVT_PROVDATA_INFO_REQ event
- *
- * \return API_SUCCESS or Error Code on failure
- */
- #define MS_prov_data(phandle, pdata) \
- MS_prov_send_pdu ((phandle), PROV_PDU_TYPE_DATA, (pdata), sizeof (PROV_DATA_S))
- /** \} */
- /* --------------------------------------------- API Declarations */
- /**
- * \defgroup prvsng_api_defs API Definitions
- * \{
- * This section describes the EtherMind Mesh Provisioning Layer APIs.
- */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * \brief Register provisioning capabilities and callback
- *
- * \par Description This function registers the provisioning capabilities of the
- * application along with the application callback to notify events during the
- * provisioning procedure.
- *
- * \param [in] pcapab Pointer to the provisioning capabilities structure \ref PROV_CAPABILITIES_S
- * \param [in] cb Application callback function pointer
- *
- * \return API_SUCCESS or Error Code on failure
- */
- API_RESULT MS_prov_register
- (
- /* IN */ PROV_CAPABILITIES_S * pcapab,
- /* IN */ PROV_UI_NOTIFY_CB cb
- );
- API_RESULT MS_prov_stop_interleave_timer
- (
- void
- );
- /**
- * \brief Setup the device for provisioning
- *
- * \par Description This function configures the device to get in a provisionable
- * state by specifying the role, bearer and creating a context.
- *
- * \param [in] role Provisioniong role to be setup - Device or Provisioner.
- * \param [in] bearer Provisioning bearer to be setup - PB-ADV or PB-GATT
- * \param [in] pdevice Pointer to the device strcuture \ref PROV_DEVICE_S
- * containing the UUID to be beaconed. This parameter is used only when the
- * role is PROV_ROLE_DEVICE and ignored otherwise.
- * \param [in] timeout The time period for which the setup shall be active.
- *
- * \return API_SUCCESS or Error Code on failure
- */
- API_RESULT MS_prov_setup
- (
- /* IN */ PROV_ROLE role,
- /* IN */ PROV_BRR bearer,
- /* IN */ PROV_DEVICE_S * pdevice,
- /* IN */ UINT16 gatt_timeout,
- /* IN */ UINT16 adv_timeout
- );
- /**
- * \brief Bind to the peer device for provisioning
- *
- * \par Description This function establishes a provisioning link with the peer device
- * and exchanges the capabilities for provisioning.
- *
- * \param [in] bearer Provisioning bearer on which to be bound - PB-ADV or PB-GATT
- * \param [in] pdevice Pointer to the device strcuture \ref PROV_DEVICE_S.
- * \param [in] attention The attention duration in seconds to be configured by the
- * device. This parameter is dont care if the role is PROV_ROLE_DEVICE.
- * \param [out] phandle The handle to the context setup on successful allocation.
- *
- * \note This API is for use by the Provisioner application only upon
- * reception of an Unprovisioned Device Beacon.
- *
- * \return API_SUCCESS or Error Code on failure
- */
- API_RESULT MS_prov_bind
- (
- /* IN */ PROV_BRR bearer,
- /* IN */ PROV_DEVICE_S * pdevice,
- /* IN */ UCHAR attention,
- /* OUT */ PROV_HANDLE * phandle
- );
- /**
- * \brief Send provisioning PDUs to the peer.
- *
- * \par Description This function is used by the provisioning application to send
- * the provisioning PDUs to the peer device during the procedure.
- *
- * \param [in] phandle Provisioning context to be used.
- * \param [in] pdu Following PDU types are handled -
- * PROV_PDU_TYPE_START
- * PROV_PDU_TYPE_INPUT_CMPLT
- * PROV_PDU_TYPE_DATA
- * \param [in] pdata Pointer to the data corresponding to the above PDUs
- * \param [in] datalen Size of the pdata
- *
- * \return API_SUCCESS or Error Code on failure
- */
- API_RESULT MS_prov_send_pdu
- (
- /* IN */ PROV_HANDLE * phandle,
- /* IN */ UCHAR pdu,
- /* IN */ void * pdata,
- /* IN */ UINT16 datalen
- );
- /**
- * \brief Set the display authval.
- *
- * \par Description This function shall be used by the provisioning application
- * to set the authval being displayed to the user on receiving \ref
- * PROV_EVT_OOB_DISPLAY event with the respective OOB Action and Size.
- *
- * \param [in] phandle Provisioning context to be used.
- * \param [in] pdata Pointer to the Authval (UINT32 *) or (UCHAR *)
- * \param [in] datalen Size of the pdata
- *
- * \return API_SUCCESS or Error Code on failure
- */
- API_RESULT MS_prov_set_authval
- (
- /* IN */ PROV_HANDLE * phandle,
- /* IN */ void * pdata,
- /* IN */ UINT16 datalen
- );
- /**
- * \brief Abort the provisioning procedure
- *
- * \par Description
- * This API can be used by the application to abort the ongoing provisioning
- * procedure. This routine closes the provisioning link with the reason as
- * specified.
- *
- * \param [in] phandle Provisioning context to be used.
- * \param [in] reason Reason for termination.
- *
- * \return API_SUCCESS or Error Code on failure
- */
- API_RESULT MS_prov_abort
- (
- PROV_HANDLE * phandle,
- UCHAR reason
- );
- /**
- * \brief Utility API to fetch current ECDH Public Key to be used for
- * Provisioning
- *
- * \par Description
- * This API can be used by the application to fetch the current ECDH P256
- * Public Key which is to be used for the Provisioning Procedure.
- *
- * \param [out] public_key to a pointer of \ref UCHAR array of length
- * \ref PROV_PUBKEY_SIZE
- *
- * \return API_SUCCESS or Error Code on failure
- */
- API_RESULT MS_prov_get_local_public_key
- (
- /* OUT */ UCHAR * public_key
- );
- #ifdef __cplusplus
- };
- #endif
- /** \} */
- /** \} */
- #endif /* _H_MS_PROV_API_ */
|