diff --git a/include/zdatachannel_service.h b/include/zdatachannel_service.h index 99ab4f2..465ec65 100644 --- a/include/zdatachannel_service.h +++ b/include/zdatachannel_service.h @@ -65,7 +65,7 @@ struct zdatachannel_s { uint16_t service_handle; /**< Handle of Nordic UART Service (as provided by the SoftDevice). */ ble_gatts_char_handles_t cmd_tx_handles; /**< 指令发送句柄 */ ble_gatts_char_handles_t cmd_rx_handles; /**< 指令接收句柄 */ - ble_gatts_char_handles_t datablock_tx_handles; /**< 数据块发送句柄 */ + // ble_gatts_char_handles_t datablock_tx_handles; /**< 数据块发送句柄 */ zdatachannel_data_handler_t data_handler; /**< Event handler to be called for handling received data. */ // 状态 @@ -83,9 +83,9 @@ static inline uint32_t zdatachannel_data_send2(uint8_t* p_data, uint16_t p_lengt return zdatachannel_data_send(p_data, &p_length); } uint32_t zdatachannel_block_data_send(uint8_t* p_data, uint16_t* p_length); -static inline uint32_t zdatachannel_block_data_send2(uint8_t* p_data, uint16_t p_length){ - return zdatachannel_block_data_send(p_data, &p_length); -} +// static inline uint32_t zdatachannel_block_data_send2(uint8_t* p_data, uint16_t p_length){ +// return zdatachannel_block_data_send(p_data, &p_length); +// } uint32_t zdatachannel_last_rx_data_haspassed_s(); diff --git a/src/zdatachannel_service.c b/src/zdatachannel_service.c index d19f583..a2e520b 100644 --- a/src/zdatachannel_service.c +++ b/src/zdatachannel_service.c @@ -9,11 +9,11 @@ #define ZDATACHANNEL_UUID_NUS_SERVICE 0x0001 /**< The UUID of the Nordic UART Service. */ #define ZDATACHANNEL_TX_CHARACTERISTIC 0x0003 /**< The UUID of the TX Characteristic. */ #define ZDATACHANNEL_RX_CHARACTERISTIC 0x0002 /**< The UUID of the RX Characteristic. */ -#define ZDATACHANNEL_DATABLOCK_TX_CHARACTERISTIC 0x0004 /**< The UUID of the RX Characteristic. */ +// #define ZDATACHANNEL_DATABLOCK_TX_CHARACTERISTIC 0x0004 /**< The UUID of the RX Characteristic. */ #define ZDATACHANNEL_MAX_RX_CHAR_LEN ZDATACHANNEL_MAX_DATA_LEN /**< Maximum length of the RX Characteristic (in bytes). */ #define ZDATACHANNEL_MAX_TX_CHAR_LEN ZDATACHANNEL_MAX_DATA_LEN /**< Maximum length of the TX Characteristic (in bytes). */ -#define ZDATACHANNEL_DATABLOCK_TX_CHAR_LEN ZDATACHANNEL_MAX_DATA_LEN /**< Maximum length of the TX Characteristic (in bytes). */ +// #define ZDATACHANNEL_DATABLOCK_TX_CHAR_LEN ZDATACHANNEL_MAX_DATA_LEN /**< Maximum length of the TX Characteristic (in bytes). */ #define NUS_BASE_UUID \ { \ @@ -57,13 +57,16 @@ static void on_write(zdatachannel_t *p_nus, ble_evt_t const *p_ble_evt) { } else { p_nus->cmd_tx_channel_is_notification_enabled = false; } - } else if ((p_evt_write->handle == p_nus->datablock_tx_handles.cccd_handle) && (p_evt_write->len == 2)) { - if (ble_srv_is_notification_enabled(p_evt_write->data)) { - p_nus->datablock_tx_channel_is_notification_enabled = true; - } else { - p_nus->datablock_tx_channel_is_notification_enabled = false; - } - } else if ((p_evt_write->handle == p_nus->cmd_rx_handles.value_handle) && (p_nus->data_handler != NULL)) { + } + // else if ((p_evt_write->handle == p_nus->datablock_tx_handles.cccd_handle) && (p_evt_write->len == 2)) { + // if (ble_srv_is_notification_enabled(p_evt_write->data)) { + // p_nus->datablock_tx_channel_is_notification_enabled = true; + // } else { + // p_nus->datablock_tx_channel_is_notification_enabled = false; + // } + // } + + else if ((p_evt_write->handle == p_nus->cmd_rx_handles.value_handle) && (p_nus->data_handler != NULL)) { evt.type = ZDATACHANNEL_EVT_RX_DATA; evt.params.rx_data.p_data = p_evt_write->data; evt.params.rx_data.length = p_evt_write->len; @@ -165,21 +168,21 @@ uint32_t zdatachannel_init(zdatachannel_t *p_nus, zdatachannel_init_t const *p_n VERIFY_SUCCESS(characteristic_add(p_nus->service_handle, &add_char_params, &p_nus->cmd_tx_handles)); - // Add the TX Characteristic. - /**@snippet [Adding proprietary characteristic to the SoftDevice] */ - memset(&add_char_params, 0, sizeof(add_char_params)); - add_char_params.uuid = ZDATACHANNEL_DATABLOCK_TX_CHARACTERISTIC; - add_char_params.uuid_type = p_nus->uuid_type; - add_char_params.max_len = ZDATACHANNEL_DATABLOCK_TX_CHAR_LEN; - add_char_params.init_len = sizeof(uint8_t); - add_char_params.is_var_len = true; - add_char_params.char_props.notify = 1; + // // Add the TX Characteristic. + // /**@snippet [Adding proprietary characteristic to the SoftDevice] */ + // memset(&add_char_params, 0, sizeof(add_char_params)); + // add_char_params.uuid = ZDATACHANNEL_DATABLOCK_TX_CHARACTERISTIC; + // add_char_params.uuid_type = p_nus->uuid_type; + // add_char_params.max_len = ZDATACHANNEL_DATABLOCK_TX_CHAR_LEN; + // add_char_params.init_len = sizeof(uint8_t); + // add_char_params.is_var_len = true; + // add_char_params.char_props.notify = 1; - add_char_params.read_access = SEC_OPEN; - add_char_params.write_access = SEC_OPEN; - add_char_params.cccd_write_access = SEC_OPEN; + // add_char_params.read_access = SEC_OPEN; + // add_char_params.write_access = SEC_OPEN; + // add_char_params.cccd_write_access = SEC_OPEN; - VERIFY_SUCCESS(characteristic_add(p_nus->service_handle, &add_char_params, &p_nus->datablock_tx_handles)); + // VERIFY_SUCCESS(characteristic_add(p_nus->service_handle, &add_char_params, &p_nus->datablock_tx_handles)); return NRF_SUCCESS; /**@snippet [Adding proprietary characteristic to the SoftDevice] */ @@ -210,25 +213,25 @@ uint32_t zdatachannel_data_send(uint8_t *p_data, uint16_t *p_length) { return sd_ble_gatts_hvx(p_datachannel->conn_handle, &hvx_params); } -uint32_t zdatachannel_block_data_send(uint8_t *p_data, uint16_t *p_length) { - ble_gatts_hvx_params_t hvx_params; +// uint32_t zdatachannel_block_data_send(uint8_t *p_data, uint16_t *p_length) { +// ble_gatts_hvx_params_t hvx_params; - if (!p_datachannel->datablock_tx_channel_is_notification_enabled) { - return NRF_ERROR_INVALID_STATE; - } +// if (!p_datachannel->datablock_tx_channel_is_notification_enabled) { +// return NRF_ERROR_INVALID_STATE; +// } - if (*p_length > ZDATACHANNEL_MAX_DATA_LEN) { - return NRF_ERROR_INVALID_PARAM; - } - memset(&hvx_params, 0, sizeof(hvx_params)); +// if (*p_length > ZDATACHANNEL_MAX_DATA_LEN) { +// return NRF_ERROR_INVALID_PARAM; +// } +// memset(&hvx_params, 0, sizeof(hvx_params)); - hvx_params.handle = p_datachannel->datablock_tx_handles.value_handle; - hvx_params.p_data = p_data; - hvx_params.p_len = p_length; - hvx_params.type = BLE_GATT_HVX_NOTIFICATION; +// hvx_params.handle = p_datachannel->datablock_tx_handles.value_handle; +// hvx_params.p_data = p_data; +// hvx_params.p_len = p_length; +// hvx_params.type = BLE_GATT_HVX_NOTIFICATION; - return sd_ble_gatts_hvx(p_datachannel->conn_handle, &hvx_params); -} +// return sd_ble_gatts_hvx(p_datachannel->conn_handle, &hvx_params); +// } uint32_t zdatachannel_last_rx_data_haspassed_s() { // uint32_t now = znordic_getpower_on_s();