Browse Source

update

master
zhaohe 11 months ago
parent
commit
623c36bf2c
  1. 4
      .vscode/settings.json
  2. 60
      app/src/main.c
  3. 29
      app/src/protocol_utils.c
  4. 4
      app/src/protocol_utils.h
  5. 16
      app/src/service/sdk_initer.c
  6. 8
      app/src/service/sdk_initer.h
  7. 2
      app_protocols

4
.vscode/settings.json

@ -239,7 +239,9 @@
"zapp_core.h": "c",
"event.h": "c",
"app_protocols.h": "c",
"sdk_initer.h": "c"
"sdk_initer.h": "c",
"nrf_bootloader_dfu_timers.h": "c",
"nrf_mbr.h": "c"
},
"files.encoding": "gbk",
"search.exclude": {

60
app/src/main.c

@ -57,44 +57,42 @@ static const char* zhex2str(uint8_t* data, size_t len) {
return str;
}
#define STRUCT_SET(dest, src) memcpy(&dest, src, sizeof(dest))
static void on_sdk_event_cb(sdk_event_t* event) {
#if 1
switch (event->event) {
case kevent_connected:
NRF_LOG_INFO("on connected....");
m_connected_state = true;
nrf_gpio_pin_write(CONNECTED_STATE_GPIO, 1);
// { // tx report
// zble_proto_packet_t* report = ble_proto_get_and_clear_report_buf();
// ble_master_connected_event_t* content = &report->d.ble_master_connected_event;
// report->cmd = kproto_report_ble_master_connected_event;
// content->connected = true;
// strcpy(content->blename, "empty");
// strcpy(content->bleid, "empty");
// ble_proto_packet_and_send_report(report, sizeof(*content));
// }
{
zble_connected_event_t revent;
STRUCT_SET(revent.blename, &event->data.on_scan_result.blename);
STRUCT_SET(revent.peeradd, &event->data.on_scan_result.peeradd);
STRUCT_SET(revent.rssi, &event->data.on_scan_result.rssi);
STRUCT_SET(revent.tx_power, &event->data.on_scan_result.tx_power);
send_report_zble_connected_event(&revent);
}
break;
case kevent_disConnected:
NRF_LOG_INFO("on disconnected....");
m_connected_state = false;
nrf_gpio_pin_write(CONNECTED_STATE_GPIO, 0);
// { // tx report
// zble_proto_packet_t* report = ble_proto_get_and_clear_report_buf();
// ble_master_connected_event_t* content = &report->d.ble_master_connected_event;
// report->cmd = kproto_report_ble_master_connected_event;
// content->connected = false;
// strcpy(content->blename, "");
// strcpy(content->bleid, "");
// ble_proto_packet_and_send_report(report, sizeof(*content));
// }
send_report_zble_disconnect_event();
break;
case kevent_scanResult:
NRF_LOG_INFO("on scan result....");
{
zble_scan_result_t revent;
STRUCT_SET(revent.blename, &event->data.on_scan_result.blename);
STRUCT_SET(revent.peeradd, &event->data.on_scan_result.peeradd);
STRUCT_SET(revent.rssi, &event->data.on_scan_result.rssi);
STRUCT_SET(revent.tx_power, &event->data.on_scan_result.tx_power);
send_report_zble_scan_result(&revent);
}
break;
case kevent_onRxData:
// ͸´«ÏûÏ¢µ½ÉÏλ»ú
@ -118,6 +116,11 @@ static void on_uart_data(uint8_t* data, int32_t len) {
send_read_version_receipt(rx, FIRMWARE_VERSION, BLESTACK_VERSION, BOOTLOADER_VERSION, HARDWARE_VERSION);
} else if (rx->cmd == kzble_cmd_start_scan) {
// TODO
// const char* slaveName, bool autoconnected
zble_start_scan_t* param = (zble_start_scan_t*)rx->data;
param->auto_connect;
param->auto_connect_client_name;
zble_master_sdk_rescan(param->auto_connect_client_name, param->auto_connect);
send_success_receipt(rx, NULL, 0);
} else if (rx->cmd == kzble_cmd_stop_scan) {
// TODO
@ -141,6 +144,7 @@ static void debug_light_tmr_cb(void* p_context) { //
}
static void heart_state_report_tmr_cb(void* p_context) { //
send_report_heart(100, m_reset_flag, m_connected_state);
}
static void board_init() {
@ -156,11 +160,6 @@ int main(void) {
zappcore_init();
board_init();
// void zble_master_sdk_init(const char* bleScanFilterName, const char* slaveName, bool autoConnect, on_sdk_event_t onSdkEvent);
// void zble_master_sdk_ble_tx(uint8_t* data, int32_t len);
// void zble_master_sdk_rescan(const char* slaveName, bool autoconnected);
// void zble_master_sdk_set_slave_name(const char* slaveName);
zble_master_sdk_init("AciDisp", "AciDisp00000", true, on_sdk_event_cb);
uart_initer_init(on_uart_data);
@ -172,6 +171,7 @@ int main(void) {
app_timer_start(m_heart_report_event_tmr, APP_TIMER_TICKS(5000), NULL);
zappcore_start_schedule();
send_report_power_on_event();
for (;;) {
if (NRF_LOG_PROCESS() == false) {

29
app/src/protocol_utils.c

@ -51,11 +51,38 @@ void send_report_heart(uint8_t power, uint8_t reset_flag, uint8_t connected_flag
heart.reset_flag = reset_flag;
heart.power = power;
zble_proto_utils_create_report(reportpacket, kzble_report_heart, index++, (uint8_t*)&heart, sizeof(heart));
reportpacket->from = kzble_master;
uart_send_data((uint8_t*)reportpacket, (uint16_t)reportpacket->packetlen);
}
void send_report_key_event(hand_acid_remoter_key_event_t event) {
bletxbuf_clear();
int32_t keyevent;
zble_proto_utils_create_report(reportpacket, 0, kzble_app_report_key_event, (uint8_t*)&keyevent, sizeof(keyevent));
reportpacket->from = kzble_master;
uart_send_data((uint8_t*)reportpacket, (uint16_t)reportpacket->packetlen);
}
}
void send_report_zble_connected_event(zble_connected_event_t* event) {
bletxbuf_clear();
zble_proto_utils_create_report(reportpacket, kzble_report_connected_event, index++, (uint8_t*)event, sizeof(*event));
reportpacket->from = kzble_master;
uart_send_data((uint8_t*)reportpacket, (uint16_t)reportpacket->packetlen);
}
void send_report_zble_disconnect_event() {
bletxbuf_clear();
zble_proto_utils_create_report(reportpacket, kzble_report_disconnect_event, index++, NULL, 0);
reportpacket->from = kzble_master;
uart_send_data((uint8_t*)reportpacket, (uint16_t)reportpacket->packetlen);
}
void send_report_zble_scan_result(zble_scan_result_t* event) {
bletxbuf_clear();
zble_proto_utils_create_report(reportpacket, kzble_report_scan_result, index++, (uint8_t*)event, sizeof(*event));
reportpacket->from = kzble_master;
uart_send_data((uint8_t*)reportpacket, (uint16_t)reportpacket->packetlen);
}
void send_report_power_on_event() {
bletxbuf_clear();
zble_proto_utils_create_report(reportpacket, kzble_report_power_on, index++, NULL, 0);
reportpacket->from = kzble_master;
uart_send_data((uint8_t*)reportpacket, (uint16_t)reportpacket->packetlen);
}

4
app/src/protocol_utils.h

@ -10,3 +10,7 @@ void send_read_version_receipt(zble_proto_packet_t* rxpacket, int32_t firmware_v
void send_report_heart(uint8_t power, uint8_t reset_flag, uint8_t connected_flag);
void send_report_key_event(hand_acid_remoter_key_event_t event);
void send_report_zble_connected_event(zble_connected_event_t* event);
void send_report_zble_disconnect_event();
void send_report_zble_scan_result(zble_scan_result_t* event);
void send_report_power_on_event();

16
app/src/service/sdk_initer.c

@ -70,6 +70,9 @@ static ble_gap_conn_params_t m_conn_param = {
};
static void onScanEvent(scan_evt_t const* p_scan_evt) {
static sdk_event_t reportEvent;
memset(&reportEvent, 0, sizeof(reportEvent));
ret_code_t err_code;
ble_gap_evt_adv_report_t const* p_adv = p_scan_evt->params.filter_match.p_adv_report;
ble_gap_scan_params_t const* p_scan_param = p_scan_evt->p_scan_params;
@ -99,6 +102,13 @@ static void onScanEvent(scan_evt_t const* p_scan_evt) {
NRF_LOG_ERROR("sd_ble_gap_connect() failed: 0x%x.", err_code);
}
}
} else {
reportEvent.event = kevent_onScanResult;
strcpy(reportEvent.data.on_scan_result.blename, ble_find_name(p_adv->data.p_data, p_adv->data.len));
reportEvent.data.on_scan_result.rssi = p_adv->rssi;
reportEvent.data.on_scan_result.tx_power = p_adv->tx_power;
memcpy(reportEvent.data.on_scan_result.peeradd, p_adv->peer_addr.addr, BLE_GAP_ADDR_LEN);
m_onSdkEvent(&reportEvent);
}
} break;
default:
@ -109,6 +119,7 @@ static void onScanEvent(scan_evt_t const* p_scan_evt) {
static void onBleNusEvent(ble_nus_c_t* p_ble_nus_c, ble_nus_c_evt_t const* p_ble_nus_evt) {
ret_code_t err_code;
static sdk_event_t event;
memset(&event, 0, sizeof(event));
switch (p_ble_nus_evt->evt_type) {
case BLE_NUS_C_EVT_DISCOVERY_COMPLETE:
@ -142,6 +153,7 @@ static void onBleNusEvent(ble_nus_c_t* p_ble_nus_c, ble_nus_c_evt_t const* p_ble
scan_start();
break;
}
// on_scan_result
}
static void onBleEvent(ble_evt_t const* p_ble_evt, void* p_context) {
ret_code_t err_code;
@ -262,8 +274,8 @@ static void nus_c_init(void) {
}
void zble_master_sdk_init(const char* bleScanFilterName, const char* slaveName, bool autoConnect, on_sdk_event_t onSdkEvent) {
APP_ERROR_HANDLER(onSdkEvent != NULL);
APP_ERROR_HANDLER(bleScanFilterName != NULL);
// APP_ERROR_HANDLER(onSdkEvent != NULL);
// APP_ERROR_HANDLER(bleScanFilterName != NULL);
memcpy(m_bleScanFilterName, bleScanFilterName, strlen(bleScanFilterName));
if (slaveName) memcpy(m_slaveName, slaveName, strlen(slaveName));

8
app/src/service/sdk_initer.h

@ -29,6 +29,7 @@ typedef enum {
kevent_onScanResult,
kevent_connected,
kevent_disConnected,
kevent_scanResult,
kevent_onRxData,
} sdk_event_type_t;
@ -39,6 +40,13 @@ typedef struct {
uint8_t* data;
uint16_t length;
} on_ble_data;
struct {
char blename[30];
uint8_t peeradd[BLE_GAP_ADDR_LEN];
uint8_t rssi;
int8_t tx_power;
} on_scan_result;
} data;
} sdk_event_t;

2
app_protocols

@ -1 +1 @@
Subproject commit 1be600cfcc00a33264e0a8344acfd22601372236
Subproject commit 052e25b45d9164b75941565940ffcb9720c398cb
Loading…
Cancel
Save