结构体

来源:互联网 发布:淘宝如何解除合并付款 编辑:程序博客网 时间:2024/06/05 20:09

//定义结构体

typedef struct
{
  uint8_t                 active    : 1;                       /**< If 1, perform active scanning (scan requests). */
  uint8_t                 selective : 1;                    /**< If 1, ignore unknown devices (non whitelisted). */
  ble_gap_whitelist_t *   p_whitelist;          /**< Pointer to whitelist, NULL if no whitelist or the current active whitelist is to be used. */
  uint16_t                interval;                           /**< Scan interval between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */
  uint16_t                window;                          /**< Scan window between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */
  uint16_t                timeout;                          /**< Scan timeout between 0x0001 and 0xFFFF in seconds, 0x0000 disables timeout. */
} ble_gap_scan_params_t;


//定义结构体,并结构体初始化

#define SCAN_INTERVAL           0x00A0                          /**< Determines scan interval in units of 0.625 millisecond. */
#define SCAN_WINDOW             0x0050                          /**< Determines scan window in units of 0.625 millisecond. */
#define SCAN_ACTIVE                1                                     /**< If 1, performe active scanning (scan requests). */
#define SCAN_SELECTIVE         0                                    /**< If 1, ignore unknown devices (non whitelisted). */
#define SCAN_TIMEOUT             0x0000                          /**< Timout when scanning. 0x0000 disables timeout. */

ble_gap_scan_params_t m_scan_params = 
  {
    .active      = SCAN_ACTIVE,
    .selective   = SCAN_SELECTIVE,
    .p_whitelist = NULL,
    .interval    = SCAN_INTERVAL,
    .window      = SCAN_WINDOW,
    .timeout     = SCAN_TIMEOUT
  };




typedef struct
{
    uint8_t          event_id;
    dm_event_param_t event_param;
    uint16_t         event_paramlen;
} dm_event_t;

typedef union
{
    ble_gap_evt_t            * p_gap_param;
    dm_application_context_t * p_app_context;
    dm_service_context_t     * p_service_context;
    dm_device_context_t      * p_device_context;
} dm_event_param_t;

typedef struct
{
  uint16_t conn_handle;
  union 
  {
    ble_gap_evt_connected_t                   connected;
    ble_gap_evt_disconnected_t                disconnected;
    ble_gap_evt_conn_param_update_t           conn_param_update;
    ble_gap_evt_sec_params_request_t          sec_params_request;
    ble_gap_evt_sec_info_request_t            sec_info_request;
    ble_gap_evt_passkey_display_t             passkey_display;
    ble_gap_evt_key_pressed_t                 key_pressed;
    ble_gap_evt_auth_key_request_t            auth_key_request;
    ble_gap_evt_lesc_dhkey_request_t          lesc_dhkey_request;
    ble_gap_evt_auth_status_t                 auth_status;
    ble_gap_evt_conn_sec_update_t             conn_sec_update;
    ble_gap_evt_timeout_t                     timeout; 
    ble_gap_evt_rssi_changed_t                rssi_changed;
    ble_gap_evt_adv_report_t                  adv_report;
    ble_gap_evt_sec_request_t                 sec_request;
    ble_gap_evt_conn_param_update_request_t   conn_param_update_request;
    ble_gap_evt_scan_req_report_t             scan_req_report;
  } params; 
} ble_gap_evt_t;

typedef struct
{
  uint8_t               auth_status;
  uint8_t               error_src : 2;
  uint8_t               bonded : 1;
  ble_gap_sec_levels_t  sm1_levels;
  ble_gap_sec_levels_t  sm2_levels;
  ble_gap_sec_kdist_t   kdist_own;
  ble_gap_sec_kdist_t   kdist_peer;
} ble_gap_evt_auth_status_t;

static uint32_t device_manager_evt_handler(dm_handle_t const * p_handle,
                                           dm_event_t const  * p_evt,
                                           ret_code_t          event_result)
{
switch (p_evt->event_id)

if(p_evt->event_param.p_gap_param->params.auth_status.auth_status == BLE_GAP_SEC_STATUS_SUCCESS)
}

------------------------------------------------------------------------------------
typedef struct
{
  ble_evt_hdr_t header; 
  union
  {
    ble_common_evt_t  common_evt;
    ble_gap_evt_t     gap_evt;
    ble_l2cap_evt_t   l2cap_evt;
    ble_gattc_evt_t   gattc_evt;
    ble_gatts_evt_t   gatts_evt;
  } evt;
} ble_evt_t;

typedef struct
{
  uint16_t conn_handle;
  union 
  {
    ble_gap_evt_connected_t                   connected;
    ble_gap_evt_disconnected_t                disconnected;
    ble_gap_evt_conn_param_update_t           conn_param_update;
    ble_gap_evt_sec_params_request_t          sec_params_request;
    ble_gap_evt_sec_info_request_t            sec_info_request;
    ble_gap_evt_passkey_display_t             passkey_display;
    ble_gap_evt_key_pressed_t                 key_pressed;
    ble_gap_evt_auth_key_request_t            auth_key_request;
    ble_gap_evt_lesc_dhkey_request_t          lesc_dhkey_request;
    ble_gap_evt_auth_status_t                 auth_status;
    ble_gap_evt_conn_sec_update_t             conn_sec_update;
    ble_gap_evt_timeout_t                     timeout; 
    ble_gap_evt_rssi_changed_t                rssi_changed;
    ble_gap_evt_adv_report_t                  adv_report;
    ble_gap_evt_sec_request_t                 sec_request;
    ble_gap_evt_conn_param_update_request_t   conn_param_update_request;
    ble_gap_evt_scan_req_report_t             scan_req_report;
  } params; 
} ble_gap_evt_t;

typedef struct
{
  uint8_t               auth_status;
  uint8_t               error_src : 2;
  uint8_t               bonded : 1;
  ble_gap_sec_levels_t  sm1_levels;
  ble_gap_sec_levels_t  sm2_levels;
  ble_gap_sec_kdist_t   kdist_own;
  ble_gap_sec_kdist_t   kdist_peer;
} ble_gap_evt_auth_status_t;

static void on_ble_evt(ble_evt_t * p_ble_evt)
{
  if(p_ble_evt->evt.gap_evt.params.auth_status.auth_status == BLE_GAP_SEC_STATUS_SUCCESS)
}


0 0
原创粉丝点击