test

Dependencies:   BufferedSerial WatchdogTimer

Committer:
harada_jpms
Date:
Fri Jun 01 07:44:22 2018 +0000
Revision:
1:d2ebf1c3ae5a
Parent:
0:ad0d1afb4462
Child:
2:a88b0b4c4f37
20180601_1700

Who changed what in which revision?

UserRevisionLine numberNew contents of line
harada_jpms 0:ad0d1afb4462 1 // Include --------------------------------------------------------------------
harada_jpms 0:ad0d1afb4462 2 #include "mbed.h"
harada_jpms 0:ad0d1afb4462 3 #include "BLE.h"
harada_jpms 0:ad0d1afb4462 4 #include "DiscoveredCharacteristic.h"
harada_jpms 0:ad0d1afb4462 5 #include "DiscoveredService.h"
harada_jpms 0:ad0d1afb4462 6 #include "UARTService.h"
harada_jpms 0:ad0d1afb4462 7
harada_jpms 0:ad0d1afb4462 8 // Definition -----------------------------------------------------------------
harada_jpms 0:ad0d1afb4462 9 #define NUM_ONCE 20
harada_jpms 0:ad0d1afb4462 10 #define BFSIZE (NUM_ONCE+4)
harada_jpms 0:ad0d1afb4462 11
harada_jpms 0:ad0d1afb4462 12 #define SOFT_DEVICE_FATHER_HANDLE 3
harada_jpms 0:ad0d1afb4462 13
harada_jpms 0:ad0d1afb4462 14 // Object ---------------------------------------------------------------------
harada_jpms 0:ad0d1afb4462 15 BLE& ble_uart = BLE::Instance();
harada_jpms 0:ad0d1afb4462 16 Serial pc(P0_1, P0_3, 115200); // for another board
harada_jpms 0:ad0d1afb4462 17 Ticker main_timer; // メインタイマー
harada_jpms 0:ad0d1afb4462 18
harada_jpms 0:ad0d1afb4462 19 // ROM / Constant data --------------------------------------------------------
harada_jpms 0:ad0d1afb4462 20 const Gap::Address_t mac_board_0 = {0xFF, 0x42, 0xD5, 0x9C, 0x9C, 0xE1};
harada_jpms 0:ad0d1afb4462 21
harada_jpms 0:ad0d1afb4462 22 // RAM ------------------------------------------------------------------------
harada_jpms 0:ad0d1afb4462 23 Gap::Handle_t connectionHandle = 0xFFFF;
harada_jpms 0:ad0d1afb4462 24 DiscoveredCharacteristic uartTXCharacteristic;
harada_jpms 0:ad0d1afb4462 25 DiscoveredCharacteristic uartRXCharacteristic;
harada_jpms 0:ad0d1afb4462 26 bool foundUartRXCharacteristic = false;
harada_jpms 0:ad0d1afb4462 27 bool connected2server = false;
harada_jpms 0:ad0d1afb4462 28 bool connection_tx = false;
harada_jpms 0:ad0d1afb4462 29 bool connection_rx = false;
harada_jpms 0:ad0d1afb4462 30 UARTService * uartServicePtr = NULL;
harada_jpms 0:ad0d1afb4462 31 Gap::Address_t my_mac;
harada_jpms 0:ad0d1afb4462 32 int my_board_index = -1;
harada_jpms 0:ad0d1afb4462 33 bool received_uart_dat = false;
harada_jpms 0:ad0d1afb4462 34 int8_t uart_buffer[BFSIZE];
harada_jpms 0:ad0d1afb4462 35 uint8_t uart_bf_len;
harada_jpms 0:ad0d1afb4462 36 volatile bool rx_isr_busy = false;
harada_jpms 0:ad0d1afb4462 37
harada_jpms 1:d2ebf1c3ae5a 38 unsigned long mac_1;
harada_jpms 1:d2ebf1c3ae5a 39 unsigned long mac_2;
harada_jpms 1:d2ebf1c3ae5a 40 unsigned long mac_3;
harada_jpms 1:d2ebf1c3ae5a 41
harada_jpms 1:d2ebf1c3ae5a 42 #define SIO_BUF_SIZE 256 /* SIO リングバッファーサイズ (1K byte) */
harada_jpms 1:d2ebf1c3ae5a 43
harada_jpms 1:d2ebf1c3ae5a 44 typedef struct {
harada_jpms 1:d2ebf1c3ae5a 45 unsigned short data_cnt; /* リング・バッファ データカウント */
harada_jpms 1:d2ebf1c3ae5a 46 unsigned short rp; /* リング・バッファ Read ポインタ */
harada_jpms 1:d2ebf1c3ae5a 47 unsigned short wp; /* リング・バッファ Write ポインタ */
harada_jpms 1:d2ebf1c3ae5a 48 unsigned char buf[SIO_BUF_SIZE]; /* リング・バッファ */
harada_jpms 1:d2ebf1c3ae5a 49 } ring_cnt_t; /* リング・バッファ 制御用構造体 */
harada_jpms 1:d2ebf1c3ae5a 50
harada_jpms 1:d2ebf1c3ae5a 51 ring_cnt_t pc_uart_buf; // 通信用リングバッファ
harada_jpms 1:d2ebf1c3ae5a 52 ring_cnt_t pc_cmd_buf; // 通信用コマンドバッファ
harada_jpms 1:d2ebf1c3ae5a 53
harada_jpms 1:d2ebf1c3ae5a 54 ring_cnt_t ble_uart_buf; // 通信用リングバッファ
harada_jpms 1:d2ebf1c3ae5a 55 ring_cnt_t ble_cmd_buf; // 通信用コマンドバッファ
harada_jpms 1:d2ebf1c3ae5a 56
harada_jpms 1:d2ebf1c3ae5a 57 int timer_cnt;
harada_jpms 1:d2ebf1c3ae5a 58 int timer_cnt_d;
harada_jpms 1:d2ebf1c3ae5a 59
harada_jpms 0:ad0d1afb4462 60 // Function prototypes --------------------------------------------------------
harada_jpms 0:ad0d1afb4462 61 // BLE
harada_jpms 0:ad0d1afb4462 62 void advertisementCallback(const Gap::AdvertisementCallbackParams_t *);
harada_jpms 0:ad0d1afb4462 63 void serviceDiscoveryCallback(const DiscoveredService *);
harada_jpms 0:ad0d1afb4462 64 void characteristicDiscoveryCallback(const DiscoveredCharacteristic *);
harada_jpms 0:ad0d1afb4462 65 void discoveryTerminationCallback(Gap::Handle_t );
harada_jpms 0:ad0d1afb4462 66 void onReceivedDataFromDeviceCallback(const GattHVXCallbackParams *);
harada_jpms 0:ad0d1afb4462 67 void connectionCallback(const Gap::ConnectionCallbackParams_t *);
harada_jpms 0:ad0d1afb4462 68 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *);
harada_jpms 0:ad0d1afb4462 69 // Pre-check
harada_jpms 0:ad0d1afb4462 70 bool mac_equals(const Gap::Address_t, const Gap::Address_t);
harada_jpms 0:ad0d1afb4462 71 int get_board_index(const Gap::Address_t);
harada_jpms 0:ad0d1afb4462 72
harada_jpms 1:d2ebf1c3ae5a 73 void uart_init();
harada_jpms 1:d2ebf1c3ae5a 74 void main_timer_proc();
harada_jpms 1:d2ebf1c3ae5a 75 unsigned int atow(char *str,unsigned short leng);
harada_jpms 1:d2ebf1c3ae5a 76 unsigned long atoh(char *str,unsigned short leng);
harada_jpms 1:d2ebf1c3ae5a 77 void ble_rs232c_cmd();
harada_jpms 1:d2ebf1c3ae5a 78 void pc_rs232c_cmd();
harada_jpms 1:d2ebf1c3ae5a 79 void ble_write(char* dat);
harada_jpms 1:d2ebf1c3ae5a 80
harada_jpms 0:ad0d1afb4462 81 //------------------------------------------------------------------------------
harada_jpms 0:ad0d1afb4462 82 // Control Program
harada_jpms 0:ad0d1afb4462 83 //------------------------------------------------------------------------------
harada_jpms 0:ad0d1afb4462 84 int main(void)
harada_jpms 0:ad0d1afb4462 85 {
harada_jpms 1:d2ebf1c3ae5a 86 uart_init();
harada_jpms 1:d2ebf1c3ae5a 87
harada_jpms 1:d2ebf1c3ae5a 88 // メインタイマー設定(1ms)
harada_jpms 1:d2ebf1c3ae5a 89 main_timer.attach(&main_timer_proc, 0.001);
harada_jpms 1:d2ebf1c3ae5a 90
harada_jpms 0:ad0d1afb4462 91 // opening message
harada_jpms 0:ad0d1afb4462 92 pc.printf("UART Communication / Client(Central) side\r\n");
harada_jpms 0:ad0d1afb4462 93 pc.printf(" need Server module (run BLE_Uart_Server program)\r\n");
harada_jpms 0:ad0d1afb4462 94 // Mixed role **************************************************************
harada_jpms 0:ad0d1afb4462 95 ble_uart.init();
harada_jpms 0:ad0d1afb4462 96 ble_uart.gap().onConnection(connectionCallback);
harada_jpms 0:ad0d1afb4462 97 ble_uart.gap().onDisconnection(disconnectionCallback);
harada_jpms 0:ad0d1afb4462 98 // Client(Central) role ****************************************************
harada_jpms 0:ad0d1afb4462 99 ble_uart.gattClient().onHVX(onReceivedDataFromDeviceCallback);
harada_jpms 0:ad0d1afb4462 100 ble_uart.gap().setScanParams(500, 450);
harada_jpms 0:ad0d1afb4462 101 ble_uart.gap().startScan(advertisementCallback);
harada_jpms 1:d2ebf1c3ae5a 102
harada_jpms 1:d2ebf1c3ae5a 103
harada_jpms 0:ad0d1afb4462 104 while(true) {
harada_jpms 0:ad0d1afb4462 105 // allow notifications from Server(Peripheral)
harada_jpms 0:ad0d1afb4462 106 if (foundUartRXCharacteristic &&
harada_jpms 0:ad0d1afb4462 107 !ble_uart.gattClient().isServiceDiscoveryActive()) {
harada_jpms 0:ad0d1afb4462 108 // need to do the following only once
harada_jpms 0:ad0d1afb4462 109 foundUartRXCharacteristic = false;
harada_jpms 0:ad0d1afb4462 110 uint16_t value = BLE_HVX_NOTIFICATION;
harada_jpms 0:ad0d1afb4462 111 ble_uart.gattClient().write(
harada_jpms 0:ad0d1afb4462 112 GattClient::GATT_OP_WRITE_REQ,
harada_jpms 0:ad0d1afb4462 113 connectionHandle,
harada_jpms 0:ad0d1afb4462 114 uartRXCharacteristic.getValueHandle() + 1,
harada_jpms 0:ad0d1afb4462 115 sizeof(uint16_t),
harada_jpms 0:ad0d1afb4462 116 reinterpret_cast<const uint8_t *>(&value)
harada_jpms 0:ad0d1afb4462 117 );
harada_jpms 0:ad0d1afb4462 118 }
harada_jpms 1:d2ebf1c3ae5a 119
harada_jpms 1:d2ebf1c3ae5a 120 // タイマーカウント更新時(1ms以上経過している)
harada_jpms 1:d2ebf1c3ae5a 121 if( timer_cnt != timer_cnt_d )
harada_jpms 1:d2ebf1c3ae5a 122 {
harada_jpms 1:d2ebf1c3ae5a 123 timer_cnt_d = timer_cnt;
harada_jpms 1:d2ebf1c3ae5a 124
harada_jpms 1:d2ebf1c3ae5a 125 ble_rs232c_cmd();
harada_jpms 1:d2ebf1c3ae5a 126 pc_rs232c_cmd();
harada_jpms 0:ad0d1afb4462 127 }
harada_jpms 0:ad0d1afb4462 128
harada_jpms 0:ad0d1afb4462 129 ble_uart.waitForEvent();
harada_jpms 0:ad0d1afb4462 130 }
harada_jpms 0:ad0d1afb4462 131 }
harada_jpms 0:ad0d1afb4462 132
harada_jpms 0:ad0d1afb4462 133 void onReceivedDataFromDeviceCallback(const GattHVXCallbackParams *params)
harada_jpms 0:ad0d1afb4462 134 {
harada_jpms 0:ad0d1afb4462 135 if (params->type == BLE_HVX_NOTIFICATION) {
harada_jpms 0:ad0d1afb4462 136 if ((params->handle
harada_jpms 0:ad0d1afb4462 137 == uartRXCharacteristic.getValueHandle()) && (params->len > 0)) {
harada_jpms 0:ad0d1afb4462 138 uart_bf_len = params->len;
harada_jpms 0:ad0d1afb4462 139 strcpy((char *)uart_buffer, (char *)params->data);
harada_jpms 0:ad0d1afb4462 140 received_uart_dat = true;
harada_jpms 0:ad0d1afb4462 141 }
harada_jpms 0:ad0d1afb4462 142 }
harada_jpms 0:ad0d1afb4462 143 }
harada_jpms 0:ad0d1afb4462 144
harada_jpms 0:ad0d1afb4462 145 bool mac_equals(const Gap::Address_t mac_1, const Gap::Address_t mac_2)
harada_jpms 0:ad0d1afb4462 146 {
harada_jpms 0:ad0d1afb4462 147 for (int i = 0; i < 6; i++) {
harada_jpms 0:ad0d1afb4462 148
harada_jpms 0:ad0d1afb4462 149 }
harada_jpms 0:ad0d1afb4462 150
harada_jpms 0:ad0d1afb4462 151 for (int i = 0; i < 6; i++) {
harada_jpms 0:ad0d1afb4462 152 if (mac_1[i] != mac_2[i]) {
harada_jpms 0:ad0d1afb4462 153 return false;
harada_jpms 0:ad0d1afb4462 154 } else {
harada_jpms 0:ad0d1afb4462 155 }
harada_jpms 0:ad0d1afb4462 156 }
harada_jpms 0:ad0d1afb4462 157 return true;
harada_jpms 0:ad0d1afb4462 158 }
harada_jpms 0:ad0d1afb4462 159
harada_jpms 0:ad0d1afb4462 160 int get_board_index(const Gap::Address_t mac)
harada_jpms 0:ad0d1afb4462 161 {
harada_jpms 0:ad0d1afb4462 162 if (mac_equals(mac, mac_board_0)) {
harada_jpms 0:ad0d1afb4462 163 return 0;
harada_jpms 0:ad0d1afb4462 164 }
harada_jpms 0:ad0d1afb4462 165 #if 0
harada_jpms 0:ad0d1afb4462 166 if (mac_equals(mac, mac_board_1)) {
harada_jpms 0:ad0d1afb4462 167 return 1;
harada_jpms 0:ad0d1afb4462 168 }
harada_jpms 0:ad0d1afb4462 169 if (mac_equals(mac, mac_board_2)) {
harada_jpms 0:ad0d1afb4462 170 return 2;
harada_jpms 0:ad0d1afb4462 171 }
harada_jpms 0:ad0d1afb4462 172 if (mac_equals(mac, mac_board_3)) {
harada_jpms 0:ad0d1afb4462 173 return 3;
harada_jpms 0:ad0d1afb4462 174 }
harada_jpms 0:ad0d1afb4462 175 if (mac_equals(mac, mac_board_4)) {
harada_jpms 0:ad0d1afb4462 176 return 4;
harada_jpms 0:ad0d1afb4462 177 }
harada_jpms 0:ad0d1afb4462 178 #endif
harada_jpms 0:ad0d1afb4462 179 return -1;
harada_jpms 0:ad0d1afb4462 180 }
harada_jpms 0:ad0d1afb4462 181
harada_jpms 0:ad0d1afb4462 182 // Client(Central) role ********************************************************
harada_jpms 0:ad0d1afb4462 183 void advertisementCallback(const Gap::AdvertisementCallbackParams_t *params)
harada_jpms 0:ad0d1afb4462 184 {
harada_jpms 0:ad0d1afb4462 185 // connections
harada_jpms 0:ad0d1afb4462 186 int peer_board_index = get_board_index(params->peerAddr);
harada_jpms 0:ad0d1afb4462 187 if (peer_board_index != -1) {
harada_jpms 0:ad0d1afb4462 188 pc.printf("");
harada_jpms 0:ad0d1afb4462 189 pc.printf(
harada_jpms 0:ad0d1afb4462 190 "adv peerAddr [%02x %02x %02x %02x %02x %02x]\r\n",
harada_jpms 0:ad0d1afb4462 191 params->peerAddr[5], params->peerAddr[4], params->peerAddr[3],
harada_jpms 0:ad0d1afb4462 192 params->peerAddr[2], params->peerAddr[1], params->peerAddr[0]
harada_jpms 0:ad0d1afb4462 193 );
harada_jpms 0:ad0d1afb4462 194 pc.printf(
harada_jpms 0:ad0d1afb4462 195 "rssi=%+4d, isScanResponse %u, AdvertisementType %u\r\n",
harada_jpms 0:ad0d1afb4462 196 params->rssi, params->isScanResponse, params->type
harada_jpms 0:ad0d1afb4462 197 );
harada_jpms 0:ad0d1afb4462 198 ble_uart.gap().connect(
harada_jpms 0:ad0d1afb4462 199 params->peerAddr, Gap::ADDR_TYPE_RANDOM_STATIC, NULL, NULL);
harada_jpms 0:ad0d1afb4462 200 }
harada_jpms 0:ad0d1afb4462 201 }
harada_jpms 0:ad0d1afb4462 202
harada_jpms 0:ad0d1afb4462 203 void serviceDiscoveryCallback(const DiscoveredService *service)
harada_jpms 0:ad0d1afb4462 204 {
harada_jpms 0:ad0d1afb4462 205 if (service->getUUID().shortOrLong() == UUID::UUID_TYPE_SHORT) {
harada_jpms 0:ad0d1afb4462 206
harada_jpms 0:ad0d1afb4462 207 } else {
harada_jpms 0:ad0d1afb4462 208 const uint8_t *longUUIDBytes = service->getUUID().getBaseUUID();
harada_jpms 0:ad0d1afb4462 209 for (unsigned i = 0; i < UUID::LENGTH_OF_LONG_UUID; i++) {
harada_jpms 0:ad0d1afb4462 210
harada_jpms 0:ad0d1afb4462 211 }
harada_jpms 0:ad0d1afb4462 212 }
harada_jpms 0:ad0d1afb4462 213 }
harada_jpms 0:ad0d1afb4462 214
harada_jpms 0:ad0d1afb4462 215 void characteristicDiscoveryCallback(
harada_jpms 0:ad0d1afb4462 216 const DiscoveredCharacteristic *characteristicP)
harada_jpms 0:ad0d1afb4462 217 {
harada_jpms 0:ad0d1afb4462 218
harada_jpms 0:ad0d1afb4462 219 if (characteristicP->getUUID().getShortUUID()
harada_jpms 0:ad0d1afb4462 220 == UARTServiceTXCharacteristicShortUUID) {
harada_jpms 0:ad0d1afb4462 221 uartTXCharacteristic = *characteristicP;
harada_jpms 0:ad0d1afb4462 222 connection_tx = true;
harada_jpms 0:ad0d1afb4462 223 } else if (characteristicP->getUUID().getShortUUID()
harada_jpms 0:ad0d1afb4462 224 == UARTServiceRXCharacteristicShortUUID) {
harada_jpms 0:ad0d1afb4462 225 uartRXCharacteristic = *characteristicP;
harada_jpms 0:ad0d1afb4462 226 foundUartRXCharacteristic = true;
harada_jpms 0:ad0d1afb4462 227 connection_rx = true;
harada_jpms 0:ad0d1afb4462 228 }
harada_jpms 0:ad0d1afb4462 229 }
harada_jpms 0:ad0d1afb4462 230
harada_jpms 0:ad0d1afb4462 231 void discoveryTerminationCallback(Gap::Handle_t connectionHandle)
harada_jpms 0:ad0d1afb4462 232 {
harada_jpms 0:ad0d1afb4462 233 }
harada_jpms 0:ad0d1afb4462 234
harada_jpms 0:ad0d1afb4462 235 // Mixed role ******************************************************************
harada_jpms 0:ad0d1afb4462 236 void connectionCallback(const Gap::ConnectionCallbackParams_t *params)
harada_jpms 0:ad0d1afb4462 237 {
harada_jpms 0:ad0d1afb4462 238 if (params->role == Gap::CENTRAL) {
harada_jpms 0:ad0d1afb4462 239 pc.printf("connected as Client(Central) (handle = %d)\r\n\r",
harada_jpms 0:ad0d1afb4462 240 params->handle);
harada_jpms 0:ad0d1afb4462 241 connected2server = true;
harada_jpms 0:ad0d1afb4462 242 connectionHandle = params->handle;
harada_jpms 0:ad0d1afb4462 243 ble_uart.gattClient().onServiceDiscoveryTermination(
harada_jpms 0:ad0d1afb4462 244 discoveryTerminationCallback);
harada_jpms 0:ad0d1afb4462 245 ble_uart.gattClient().launchServiceDiscovery(
harada_jpms 0:ad0d1afb4462 246 params->handle,
harada_jpms 0:ad0d1afb4462 247 serviceDiscoveryCallback,
harada_jpms 0:ad0d1afb4462 248 characteristicDiscoveryCallback
harada_jpms 0:ad0d1afb4462 249 );
harada_jpms 0:ad0d1afb4462 250 }
harada_jpms 0:ad0d1afb4462 251 pc.printf(
harada_jpms 0:ad0d1afb4462 252 "Client(Central/Myself) %02x:%02x:%02x:%02x:%02x:%02x\r\n",
harada_jpms 0:ad0d1afb4462 253 params->ownAddr[5], params->ownAddr[4], params->ownAddr[3],
harada_jpms 0:ad0d1afb4462 254 params->ownAddr[2], params->ownAddr[1], params->ownAddr[0]
harada_jpms 0:ad0d1afb4462 255 );
harada_jpms 0:ad0d1afb4462 256 pc.printf(
harada_jpms 0:ad0d1afb4462 257 "Connected Server(Peripheral) %02x:%02x:%02x:%02x:%02x:%02x\r\n",
harada_jpms 0:ad0d1afb4462 258 params->peerAddr[5], params->peerAddr[4], params->peerAddr[3],
harada_jpms 0:ad0d1afb4462 259 params->peerAddr[2], params->peerAddr[1], params->peerAddr[0]
harada_jpms 0:ad0d1afb4462 260 );
harada_jpms 0:ad0d1afb4462 261 }
harada_jpms 0:ad0d1afb4462 262
harada_jpms 0:ad0d1afb4462 263 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
harada_jpms 0:ad0d1afb4462 264 {
harada_jpms 0:ad0d1afb4462 265 pc.printf(" -> disconnected\r\n", params->handle);
harada_jpms 0:ad0d1afb4462 266 connected2server = false;
harada_jpms 0:ad0d1afb4462 267 // connection_1st = false;
harada_jpms 0:ad0d1afb4462 268 connection_tx = false;
harada_jpms 0:ad0d1afb4462 269 connection_rx = false;
harada_jpms 0:ad0d1afb4462 270 if (params->handle == SOFT_DEVICE_FATHER_HANDLE) {
harada_jpms 0:ad0d1afb4462 271 ble_uart.startAdvertising(); // restart advertising
harada_jpms 0:ad0d1afb4462 272 } else {
harada_jpms 0:ad0d1afb4462 273 ble_uart.gap().startScan(advertisementCallback);// restart scan
harada_jpms 0:ad0d1afb4462 274 }
harada_jpms 0:ad0d1afb4462 275 }
harada_jpms 1:d2ebf1c3ae5a 276
harada_jpms 1:d2ebf1c3ae5a 277 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 278 /* 関数名 : uart_init */
harada_jpms 1:d2ebf1c3ae5a 279 /* 概要 : 通信初期化 */
harada_jpms 1:d2ebf1c3ae5a 280 /* 作成者 : JPMS H.Harada */
harada_jpms 1:d2ebf1c3ae5a 281 /* 作成日 : 2017.08.30 */
harada_jpms 1:d2ebf1c3ae5a 282 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 283 void uart_init()
harada_jpms 1:d2ebf1c3ae5a 284 {
harada_jpms 1:d2ebf1c3ae5a 285 int k;
harada_jpms 1:d2ebf1c3ae5a 286
harada_jpms 1:d2ebf1c3ae5a 287 // 初期化時のごみを出力
harada_jpms 1:d2ebf1c3ae5a 288 while( pc.readable() )
harada_jpms 1:d2ebf1c3ae5a 289 {
harada_jpms 1:d2ebf1c3ae5a 290 pc.getc();
harada_jpms 1:d2ebf1c3ae5a 291 }
harada_jpms 1:d2ebf1c3ae5a 292
harada_jpms 1:d2ebf1c3ae5a 293 // UART バッファ初期化 ///////////////////////////////////////////////
harada_jpms 1:d2ebf1c3ae5a 294 pc_uart_buf.data_cnt = 0;
harada_jpms 1:d2ebf1c3ae5a 295 pc_uart_buf.rp = 0;
harada_jpms 1:d2ebf1c3ae5a 296 pc_uart_buf.wp = 0;
harada_jpms 1:d2ebf1c3ae5a 297
harada_jpms 1:d2ebf1c3ae5a 298 ble_uart_buf.data_cnt = 0;
harada_jpms 1:d2ebf1c3ae5a 299 ble_uart_buf.rp = 0;
harada_jpms 1:d2ebf1c3ae5a 300 ble_uart_buf.wp = 0;
harada_jpms 1:d2ebf1c3ae5a 301
harada_jpms 1:d2ebf1c3ae5a 302 for(k=0;k<SIO_BUF_SIZE;k++) {
harada_jpms 1:d2ebf1c3ae5a 303 pc_uart_buf.buf[k] = 0;
harada_jpms 1:d2ebf1c3ae5a 304 ble_uart_buf.buf[k] = 0;
harada_jpms 1:d2ebf1c3ae5a 305 }
harada_jpms 1:d2ebf1c3ae5a 306
harada_jpms 1:d2ebf1c3ae5a 307 // コマンド バッファ初期化 ///////////////////////////////////////////////
harada_jpms 1:d2ebf1c3ae5a 308 pc_cmd_buf.data_cnt = 0;
harada_jpms 1:d2ebf1c3ae5a 309 pc_cmd_buf.rp = 0;
harada_jpms 1:d2ebf1c3ae5a 310 pc_cmd_buf.wp = 0;
harada_jpms 1:d2ebf1c3ae5a 311
harada_jpms 1:d2ebf1c3ae5a 312 ble_cmd_buf.data_cnt = 0;
harada_jpms 1:d2ebf1c3ae5a 313 ble_cmd_buf.rp = 0;
harada_jpms 1:d2ebf1c3ae5a 314 ble_cmd_buf.wp = 0;
harada_jpms 1:d2ebf1c3ae5a 315
harada_jpms 1:d2ebf1c3ae5a 316 for(k=0;k<SIO_BUF_SIZE;k++) {
harada_jpms 1:d2ebf1c3ae5a 317 pc_cmd_buf.buf[k] = 0;
harada_jpms 1:d2ebf1c3ae5a 318 ble_cmd_buf.buf[k] = 0;
harada_jpms 1:d2ebf1c3ae5a 319 }
harada_jpms 1:d2ebf1c3ae5a 320
harada_jpms 1:d2ebf1c3ae5a 321 /////////////////////////////////////////////////////////////////
harada_jpms 1:d2ebf1c3ae5a 322 }
harada_jpms 1:d2ebf1c3ae5a 323
harada_jpms 1:d2ebf1c3ae5a 324 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 325 /* 関数名 : main_timer_proc */
harada_jpms 1:d2ebf1c3ae5a 326 /* 概要 : メインタイマ処理 */
harada_jpms 1:d2ebf1c3ae5a 327 /* 作成者 : JPMS H.Harada */
harada_jpms 1:d2ebf1c3ae5a 328 /* 作成日 : 2018.02.22 */
harada_jpms 1:d2ebf1c3ae5a 329 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 330 void main_timer_proc()
harada_jpms 1:d2ebf1c3ae5a 331 {
harada_jpms 1:d2ebf1c3ae5a 332 timer_cnt++; // タイマカウントを加算
harada_jpms 1:d2ebf1c3ae5a 333 }
harada_jpms 1:d2ebf1c3ae5a 334
harada_jpms 1:d2ebf1c3ae5a 335 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 336 /* 関数名 : atow */
harada_jpms 1:d2ebf1c3ae5a 337 /* 概要 : アスキー変換処理 */
harada_jpms 1:d2ebf1c3ae5a 338 /* 作成者 : JPMS H.Harada */
harada_jpms 1:d2ebf1c3ae5a 339 /* 作成日 : 2017.08.30 */
harada_jpms 1:d2ebf1c3ae5a 340 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 341 unsigned int atow(char *str,unsigned short leng)
harada_jpms 1:d2ebf1c3ae5a 342 {
harada_jpms 1:d2ebf1c3ae5a 343 register unsigned short i;
harada_jpms 1:d2ebf1c3ae5a 344 unsigned int ret_data = 0;
harada_jpms 1:d2ebf1c3ae5a 345
harada_jpms 1:d2ebf1c3ae5a 346 /*---------------- データー長エラー -----------------*/
harada_jpms 1:d2ebf1c3ae5a 347 // if(leng >= 11)
harada_jpms 1:d2ebf1c3ae5a 348 // {
harada_jpms 1:d2ebf1c3ae5a 349 // ret_data = ATOW_ERROR; /* データエラー */
harada_jpms 1:d2ebf1c3ae5a 350 // }
harada_jpms 1:d2ebf1c3ae5a 351 /*---------------- データー長 OK ------------------*/
harada_jpms 1:d2ebf1c3ae5a 352 // else
harada_jpms 1:d2ebf1c3ae5a 353 // {
harada_jpms 1:d2ebf1c3ae5a 354 i = leng;
harada_jpms 1:d2ebf1c3ae5a 355
harada_jpms 1:d2ebf1c3ae5a 356 while(i)
harada_jpms 1:d2ebf1c3ae5a 357 {
harada_jpms 1:d2ebf1c3ae5a 358 ret_data *= 10; /* 10倍 */
harada_jpms 1:d2ebf1c3ae5a 359
harada_jpms 1:d2ebf1c3ae5a 360 /*------ データ '0' ~ '9' 範囲内 -----*/
harada_jpms 1:d2ebf1c3ae5a 361 if( (*str >= '0') && (*str <= '9') )
harada_jpms 1:d2ebf1c3ae5a 362 {
harada_jpms 1:d2ebf1c3ae5a 363 ret_data += (*str) - '0';
harada_jpms 1:d2ebf1c3ae5a 364 str++;
harada_jpms 1:d2ebf1c3ae5a 365 }
harada_jpms 1:d2ebf1c3ae5a 366 /*------ データ '0' ~ '9' 範囲外 -----*/
harada_jpms 1:d2ebf1c3ae5a 367 else
harada_jpms 1:d2ebf1c3ae5a 368 {
harada_jpms 1:d2ebf1c3ae5a 369 // ret_data = ATOW_ERROR; /* データエラー */
harada_jpms 1:d2ebf1c3ae5a 370 break;
harada_jpms 1:d2ebf1c3ae5a 371 }
harada_jpms 1:d2ebf1c3ae5a 372 i--;
harada_jpms 1:d2ebf1c3ae5a 373 }
harada_jpms 1:d2ebf1c3ae5a 374 /*-------------- データオバーフロー ----------*/
harada_jpms 1:d2ebf1c3ae5a 375 // if(ret_data & 0x8000)
harada_jpms 1:d2ebf1c3ae5a 376 // {
harada_jpms 1:d2ebf1c3ae5a 377 // ret_data = ATOW_ERROR; /* データエラー */
harada_jpms 1:d2ebf1c3ae5a 378 // }
harada_jpms 1:d2ebf1c3ae5a 379 // }
harada_jpms 1:d2ebf1c3ae5a 380 return(ret_data);
harada_jpms 1:d2ebf1c3ae5a 381 }
harada_jpms 1:d2ebf1c3ae5a 382
harada_jpms 1:d2ebf1c3ae5a 383 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 384 /* 関数名 : atoh */
harada_jpms 1:d2ebf1c3ae5a 385 /* 概要 : アスキー変換処理 */
harada_jpms 1:d2ebf1c3ae5a 386 /* 作成者 : JPMS H.Harada */
harada_jpms 1:d2ebf1c3ae5a 387 /* 作成日 : 2017.08.30 */
harada_jpms 1:d2ebf1c3ae5a 388 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 389 unsigned long atoh(char *str,unsigned short leng)
harada_jpms 1:d2ebf1c3ae5a 390 {
harada_jpms 1:d2ebf1c3ae5a 391 register unsigned short i;
harada_jpms 1:d2ebf1c3ae5a 392 unsigned long ret_data = 0;
harada_jpms 1:d2ebf1c3ae5a 393
harada_jpms 1:d2ebf1c3ae5a 394 /*---------------- データー長エラー -----------------*/
harada_jpms 1:d2ebf1c3ae5a 395 // if(leng >= 11)
harada_jpms 1:d2ebf1c3ae5a 396 // {
harada_jpms 1:d2ebf1c3ae5a 397 // ret_data = ATOW_ERROR; /* データエラー */
harada_jpms 1:d2ebf1c3ae5a 398 // }
harada_jpms 1:d2ebf1c3ae5a 399 /*---------------- データー長 OK ------------------*/
harada_jpms 1:d2ebf1c3ae5a 400 // else
harada_jpms 1:d2ebf1c3ae5a 401 // {
harada_jpms 1:d2ebf1c3ae5a 402 i = leng;
harada_jpms 1:d2ebf1c3ae5a 403
harada_jpms 1:d2ebf1c3ae5a 404 while(i)
harada_jpms 1:d2ebf1c3ae5a 405 {
harada_jpms 1:d2ebf1c3ae5a 406 ret_data *= 16; /* 16倍 */
harada_jpms 1:d2ebf1c3ae5a 407
harada_jpms 1:d2ebf1c3ae5a 408 /*------ データ '0' ~ '9' 範囲内 -----*/
harada_jpms 1:d2ebf1c3ae5a 409 if( (*str >= '0') && (*str <= '9') )
harada_jpms 1:d2ebf1c3ae5a 410 {
harada_jpms 1:d2ebf1c3ae5a 411 ret_data += (*str) - '0';
harada_jpms 1:d2ebf1c3ae5a 412 str++;
harada_jpms 1:d2ebf1c3ae5a 413 }
harada_jpms 1:d2ebf1c3ae5a 414 /*------ データ 'A' ~ 'F' 範囲内 -----*/
harada_jpms 1:d2ebf1c3ae5a 415 else if( (*str >= 'A') && (*str <= 'F') )
harada_jpms 1:d2ebf1c3ae5a 416 {
harada_jpms 1:d2ebf1c3ae5a 417 ret_data += (*str) - 'A' + 10;
harada_jpms 1:d2ebf1c3ae5a 418 str++;
harada_jpms 1:d2ebf1c3ae5a 419 }
harada_jpms 1:d2ebf1c3ae5a 420 /*------ データ '0' ~ '9' 範囲外 -----*/
harada_jpms 1:d2ebf1c3ae5a 421 else
harada_jpms 1:d2ebf1c3ae5a 422 {
harada_jpms 1:d2ebf1c3ae5a 423 // ret_data = ATOW_ERROR; /* データエラー */
harada_jpms 1:d2ebf1c3ae5a 424 break;
harada_jpms 1:d2ebf1c3ae5a 425 }
harada_jpms 1:d2ebf1c3ae5a 426 i--;
harada_jpms 1:d2ebf1c3ae5a 427 }
harada_jpms 1:d2ebf1c3ae5a 428 /*-------------- データオバーフロー ----------*/
harada_jpms 1:d2ebf1c3ae5a 429 // if(ret_data & 0x8000)
harada_jpms 1:d2ebf1c3ae5a 430 // {
harada_jpms 1:d2ebf1c3ae5a 431 // ret_data = ATOW_ERROR; /* データエラー */
harada_jpms 1:d2ebf1c3ae5a 432 // }
harada_jpms 1:d2ebf1c3ae5a 433 // }
harada_jpms 1:d2ebf1c3ae5a 434 return(ret_data);
harada_jpms 1:d2ebf1c3ae5a 435 }
harada_jpms 1:d2ebf1c3ae5a 436
harada_jpms 1:d2ebf1c3ae5a 437 char ble_str[32][10];
harada_jpms 1:d2ebf1c3ae5a 438 char ble_str2[10][8] = { "P ", "U ", " ", "RESP ", " ", " ", " ", " ", " ", " " };
harada_jpms 1:d2ebf1c3ae5a 439
harada_jpms 1:d2ebf1c3ae5a 440 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 441 /* 関数名 : rs232c_cmd */
harada_jpms 1:d2ebf1c3ae5a 442 /* 概要 : 通信コマンド処理 */
harada_jpms 1:d2ebf1c3ae5a 443 /* 作成者 : JPMS H.Harada */
harada_jpms 1:d2ebf1c3ae5a 444 /* 作成日 : 2017.08.30 */
harada_jpms 1:d2ebf1c3ae5a 445 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 446 void ble_rs232c_cmd()
harada_jpms 1:d2ebf1c3ae5a 447 {
harada_jpms 1:d2ebf1c3ae5a 448 unsigned int c, i, j;
harada_jpms 1:d2ebf1c3ae5a 449 int rdat;
harada_jpms 1:d2ebf1c3ae5a 450
harada_jpms 1:d2ebf1c3ae5a 451 for( i=0; i<uart_bf_len; i++ )
harada_jpms 1:d2ebf1c3ae5a 452 {
harada_jpms 1:d2ebf1c3ae5a 453 ble_uart_buf.buf[ ble_uart_buf.wp ] = uart_buffer[i];
harada_jpms 1:d2ebf1c3ae5a 454 ble_uart_buf.data_cnt++;
harada_jpms 1:d2ebf1c3ae5a 455
harada_jpms 1:d2ebf1c3ae5a 456 if( ble_uart_buf.wp == SIO_BUF_SIZE-1 )
harada_jpms 1:d2ebf1c3ae5a 457 {
harada_jpms 1:d2ebf1c3ae5a 458 ble_uart_buf.wp = 0;
harada_jpms 1:d2ebf1c3ae5a 459 }
harada_jpms 1:d2ebf1c3ae5a 460 else
harada_jpms 1:d2ebf1c3ae5a 461 {
harada_jpms 1:d2ebf1c3ae5a 462 ble_uart_buf.wp++;
harada_jpms 1:d2ebf1c3ae5a 463 }
harada_jpms 1:d2ebf1c3ae5a 464 }
harada_jpms 1:d2ebf1c3ae5a 465
harada_jpms 1:d2ebf1c3ae5a 466 if( ble_uart_buf.data_cnt > 0 )
harada_jpms 1:d2ebf1c3ae5a 467 {
harada_jpms 1:d2ebf1c3ae5a 468 unsigned int len = ble_uart_buf.data_cnt;
harada_jpms 1:d2ebf1c3ae5a 469 for( c=0; c<len; c++ )
harada_jpms 1:d2ebf1c3ae5a 470 {
harada_jpms 1:d2ebf1c3ae5a 471 rdat = ble_uart_buf.buf[ble_uart_buf.rp];
harada_jpms 1:d2ebf1c3ae5a 472 ble_uart_buf.data_cnt--;
harada_jpms 1:d2ebf1c3ae5a 473
harada_jpms 1:d2ebf1c3ae5a 474 if( ble_uart_buf.rp == SIO_BUF_SIZE-1 )
harada_jpms 1:d2ebf1c3ae5a 475 {
harada_jpms 1:d2ebf1c3ae5a 476 ble_uart_buf.rp = 0;
harada_jpms 1:d2ebf1c3ae5a 477 }
harada_jpms 1:d2ebf1c3ae5a 478 else
harada_jpms 1:d2ebf1c3ae5a 479 {
harada_jpms 1:d2ebf1c3ae5a 480 ble_uart_buf.rp++;
harada_jpms 1:d2ebf1c3ae5a 481 }
harada_jpms 1:d2ebf1c3ae5a 482
harada_jpms 1:d2ebf1c3ae5a 483 if( rdat != '\n' )
harada_jpms 1:d2ebf1c3ae5a 484 {
harada_jpms 1:d2ebf1c3ae5a 485 ble_cmd_buf.buf[ble_cmd_buf.data_cnt++] = rdat;
harada_jpms 1:d2ebf1c3ae5a 486 }
harada_jpms 1:d2ebf1c3ae5a 487
harada_jpms 1:d2ebf1c3ae5a 488 if (rdat == '\r')
harada_jpms 1:d2ebf1c3ae5a 489 {
harada_jpms 1:d2ebf1c3ae5a 490 int k = 0;
harada_jpms 1:d2ebf1c3ae5a 491 int l = 0;
harada_jpms 1:d2ebf1c3ae5a 492 for (i=0;i<ble_cmd_buf.data_cnt;i++)
harada_jpms 1:d2ebf1c3ae5a 493 {
harada_jpms 1:d2ebf1c3ae5a 494 if( ble_cmd_buf.buf[i] == ' ' ||
harada_jpms 1:d2ebf1c3ae5a 495 ble_cmd_buf.buf[i] == '\r' ||
harada_jpms 1:d2ebf1c3ae5a 496 ble_cmd_buf.buf[i] == '\t' )
harada_jpms 1:d2ebf1c3ae5a 497 {
harada_jpms 1:d2ebf1c3ae5a 498 ble_str[k++][l] = '\0';
harada_jpms 1:d2ebf1c3ae5a 499 l = 0;
harada_jpms 1:d2ebf1c3ae5a 500 }
harada_jpms 1:d2ebf1c3ae5a 501 else
harada_jpms 1:d2ebf1c3ae5a 502 {
harada_jpms 1:d2ebf1c3ae5a 503 ble_str[k][l++] = ble_cmd_buf.buf[i];
harada_jpms 1:d2ebf1c3ae5a 504 }
harada_jpms 1:d2ebf1c3ae5a 505 }
harada_jpms 1:d2ebf1c3ae5a 506
harada_jpms 1:d2ebf1c3ae5a 507 if( ble_cmd_buf.data_cnt == 1 )
harada_jpms 1:d2ebf1c3ae5a 508 {
harada_jpms 1:d2ebf1c3ae5a 509 k = 0;
harada_jpms 1:d2ebf1c3ae5a 510 }
harada_jpms 1:d2ebf1c3ae5a 511
harada_jpms 1:d2ebf1c3ae5a 512 ble_cmd_buf.data_cnt = 0;
harada_jpms 1:d2ebf1c3ae5a 513 ble_cmd_buf.buf[0] = '\0';
harada_jpms 1:d2ebf1c3ae5a 514
harada_jpms 1:d2ebf1c3ae5a 515 if (k > 0)
harada_jpms 1:d2ebf1c3ae5a 516 {
harada_jpms 1:d2ebf1c3ae5a 517 int ret;
harada_jpms 1:d2ebf1c3ae5a 518 int cmd_no = 0xFF;
harada_jpms 1:d2ebf1c3ae5a 519
harada_jpms 1:d2ebf1c3ae5a 520 for( j=0; j<10; j++ )
harada_jpms 1:d2ebf1c3ae5a 521 {
harada_jpms 1:d2ebf1c3ae5a 522 ret = 1;
harada_jpms 1:d2ebf1c3ae5a 523
harada_jpms 1:d2ebf1c3ae5a 524 if( strlen(ble_str[0]) > 0 )
harada_jpms 1:d2ebf1c3ae5a 525 {
harada_jpms 1:d2ebf1c3ae5a 526 for( i=0; i<strlen(ble_str[0]); i++ )
harada_jpms 1:d2ebf1c3ae5a 527 {
harada_jpms 1:d2ebf1c3ae5a 528 if( ble_str[0][i] != ble_str2[j][i] )
harada_jpms 1:d2ebf1c3ae5a 529 {
harada_jpms 1:d2ebf1c3ae5a 530 ret = 0;
harada_jpms 1:d2ebf1c3ae5a 531 }
harada_jpms 1:d2ebf1c3ae5a 532 }
harada_jpms 1:d2ebf1c3ae5a 533
harada_jpms 1:d2ebf1c3ae5a 534 if( ret )
harada_jpms 1:d2ebf1c3ae5a 535 {
harada_jpms 1:d2ebf1c3ae5a 536 cmd_no = j;
harada_jpms 1:d2ebf1c3ae5a 537 break;
harada_jpms 1:d2ebf1c3ae5a 538 }
harada_jpms 1:d2ebf1c3ae5a 539 }
harada_jpms 1:d2ebf1c3ae5a 540 }
harada_jpms 1:d2ebf1c3ae5a 541
harada_jpms 1:d2ebf1c3ae5a 542 // コマンド P
harada_jpms 1:d2ebf1c3ae5a 543 if( cmd_no == 0 )
harada_jpms 1:d2ebf1c3ae5a 544 {
harada_jpms 1:d2ebf1c3ae5a 545 int data_cnt = atow(ble_str[1], strlen(ble_str[1]));
harada_jpms 1:d2ebf1c3ae5a 546 int left = atow(ble_str[2], strlen(ble_str[2]));
harada_jpms 1:d2ebf1c3ae5a 547 int right = atow(ble_str[3], strlen(ble_str[3]));
harada_jpms 1:d2ebf1c3ae5a 548
harada_jpms 1:d2ebf1c3ae5a 549 pc.printf( "POINT %4d %d %d\r", data_cnt, left, right );
harada_jpms 1:d2ebf1c3ae5a 550 }
harada_jpms 1:d2ebf1c3ae5a 551 // コマンド U
harada_jpms 1:d2ebf1c3ae5a 552 else if( cmd_no == 1 )
harada_jpms 1:d2ebf1c3ae5a 553 {
harada_jpms 1:d2ebf1c3ae5a 554 unsigned int high = atoh(ble_str[1], strlen(ble_str[1]));
harada_jpms 1:d2ebf1c3ae5a 555 unsigned int low = atoh(ble_str[2], strlen(ble_str[2]));
harada_jpms 1:d2ebf1c3ae5a 556
harada_jpms 1:d2ebf1c3ae5a 557 pc.printf( "UID %08X %08X\r\n", high, low );
harada_jpms 1:d2ebf1c3ae5a 558 }
harada_jpms 1:d2ebf1c3ae5a 559 // コマンド
harada_jpms 1:d2ebf1c3ae5a 560 else if( cmd_no == 2 )
harada_jpms 1:d2ebf1c3ae5a 561 {
harada_jpms 1:d2ebf1c3ae5a 562
harada_jpms 1:d2ebf1c3ae5a 563 }
harada_jpms 1:d2ebf1c3ae5a 564 // コマンド RESP
harada_jpms 1:d2ebf1c3ae5a 565 else if( cmd_no == 3 )
harada_jpms 1:d2ebf1c3ae5a 566 {
harada_jpms 1:d2ebf1c3ae5a 567 pc.printf( "RESP\r" );
harada_jpms 1:d2ebf1c3ae5a 568 }
harada_jpms 1:d2ebf1c3ae5a 569 // コマンド
harada_jpms 1:d2ebf1c3ae5a 570 else if( cmd_no == 4 )
harada_jpms 1:d2ebf1c3ae5a 571 {
harada_jpms 1:d2ebf1c3ae5a 572
harada_jpms 1:d2ebf1c3ae5a 573 }
harada_jpms 1:d2ebf1c3ae5a 574 // コマンド
harada_jpms 1:d2ebf1c3ae5a 575 else if( cmd_no == 5 )
harada_jpms 1:d2ebf1c3ae5a 576 {
harada_jpms 1:d2ebf1c3ae5a 577
harada_jpms 1:d2ebf1c3ae5a 578 }
harada_jpms 1:d2ebf1c3ae5a 579
harada_jpms 1:d2ebf1c3ae5a 580 // コマンド
harada_jpms 1:d2ebf1c3ae5a 581 else if( cmd_no == 6 )
harada_jpms 1:d2ebf1c3ae5a 582 {
harada_jpms 1:d2ebf1c3ae5a 583
harada_jpms 1:d2ebf1c3ae5a 584 }
harada_jpms 1:d2ebf1c3ae5a 585
harada_jpms 1:d2ebf1c3ae5a 586 // コマンド
harada_jpms 1:d2ebf1c3ae5a 587 else if( cmd_no == 7 )
harada_jpms 1:d2ebf1c3ae5a 588 {
harada_jpms 1:d2ebf1c3ae5a 589
harada_jpms 1:d2ebf1c3ae5a 590 }
harada_jpms 1:d2ebf1c3ae5a 591 // コマンド
harada_jpms 1:d2ebf1c3ae5a 592 else if( cmd_no == 8 )
harada_jpms 1:d2ebf1c3ae5a 593 {
harada_jpms 1:d2ebf1c3ae5a 594
harada_jpms 1:d2ebf1c3ae5a 595 }
harada_jpms 1:d2ebf1c3ae5a 596 // コマンド
harada_jpms 1:d2ebf1c3ae5a 597 else if( cmd_no == 9 )
harada_jpms 1:d2ebf1c3ae5a 598 {
harada_jpms 1:d2ebf1c3ae5a 599
harada_jpms 1:d2ebf1c3ae5a 600 }
harada_jpms 1:d2ebf1c3ae5a 601 else
harada_jpms 1:d2ebf1c3ae5a 602 {
harada_jpms 1:d2ebf1c3ae5a 603 pc.printf("CMD_ERR\r\n");
harada_jpms 1:d2ebf1c3ae5a 604 }
harada_jpms 1:d2ebf1c3ae5a 605 }
harada_jpms 1:d2ebf1c3ae5a 606 }
harada_jpms 1:d2ebf1c3ae5a 607 }
harada_jpms 1:d2ebf1c3ae5a 608 }
harada_jpms 1:d2ebf1c3ae5a 609 }
harada_jpms 1:d2ebf1c3ae5a 610
harada_jpms 1:d2ebf1c3ae5a 611 #define CMD_NUM 24
harada_jpms 1:d2ebf1c3ae5a 612
harada_jpms 1:d2ebf1c3ae5a 613 char pc_str[16][10];
harada_jpms 1:d2ebf1c3ae5a 614 char pc_str2[CMD_NUM][8] = { "START ", // 0
harada_jpms 1:d2ebf1c3ae5a 615 "STOP ", // 1
harada_jpms 1:d2ebf1c3ae5a 616 " ", // 2
harada_jpms 1:d2ebf1c3ae5a 617 "MSET ", // 3
harada_jpms 1:d2ebf1c3ae5a 618 " ", // 4
harada_jpms 1:d2ebf1c3ae5a 619 " ", // 5
harada_jpms 1:d2ebf1c3ae5a 620 " ", // 6
harada_jpms 1:d2ebf1c3ae5a 621 "ISETL ", // 7
harada_jpms 1:d2ebf1c3ae5a 622 "ISETR ", // 8
harada_jpms 1:d2ebf1c3ae5a 623 " ", // 9
harada_jpms 1:d2ebf1c3ae5a 624 " ", // 10
harada_jpms 1:d2ebf1c3ae5a 625 "CONNECT", // 11
harada_jpms 1:d2ebf1c3ae5a 626 "DISCO ", // 12
harada_jpms 1:d2ebf1c3ae5a 627 "INTVL ", // 13
harada_jpms 1:d2ebf1c3ae5a 628 "NTC ", // 14
harada_jpms 1:d2ebf1c3ae5a 629 "OTC ", // 15
harada_jpms 1:d2ebf1c3ae5a 630 " ", // 16
harada_jpms 1:d2ebf1c3ae5a 631 " ", // 17
harada_jpms 1:d2ebf1c3ae5a 632 "IDGET ", // 18
harada_jpms 1:d2ebf1c3ae5a 633 " ", // 19
harada_jpms 1:d2ebf1c3ae5a 634 " ", // 20
harada_jpms 1:d2ebf1c3ae5a 635 " ", // 21
harada_jpms 1:d2ebf1c3ae5a 636 " ", // 22
harada_jpms 1:d2ebf1c3ae5a 637 " "}; // 23
harada_jpms 1:d2ebf1c3ae5a 638
harada_jpms 1:d2ebf1c3ae5a 639 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 640 /* 関数名 : rs232c_cmd */
harada_jpms 1:d2ebf1c3ae5a 641 /* 概要 : 通信コマンド処理 */
harada_jpms 1:d2ebf1c3ae5a 642 /* 作成者 : JPMS H.Harada */
harada_jpms 1:d2ebf1c3ae5a 643 /* 作成日 : 2017.08.30 */
harada_jpms 1:d2ebf1c3ae5a 644 /****************************************************************************/
harada_jpms 1:d2ebf1c3ae5a 645 void pc_rs232c_cmd()
harada_jpms 1:d2ebf1c3ae5a 646 {
harada_jpms 1:d2ebf1c3ae5a 647 unsigned int c, i, j;
harada_jpms 1:d2ebf1c3ae5a 648 int rdat;
harada_jpms 1:d2ebf1c3ae5a 649
harada_jpms 1:d2ebf1c3ae5a 650 while( pc.readable() )
harada_jpms 1:d2ebf1c3ae5a 651 {
harada_jpms 1:d2ebf1c3ae5a 652 pc_uart_buf.buf[pc_uart_buf.wp] = pc.getc();
harada_jpms 1:d2ebf1c3ae5a 653 pc_uart_buf.data_cnt++;
harada_jpms 1:d2ebf1c3ae5a 654
harada_jpms 1:d2ebf1c3ae5a 655 if( pc_uart_buf.wp == SIO_BUF_SIZE-1 )
harada_jpms 1:d2ebf1c3ae5a 656 {
harada_jpms 1:d2ebf1c3ae5a 657 pc_uart_buf.wp = 0;
harada_jpms 1:d2ebf1c3ae5a 658 }
harada_jpms 1:d2ebf1c3ae5a 659 else
harada_jpms 1:d2ebf1c3ae5a 660 {
harada_jpms 1:d2ebf1c3ae5a 661 pc_uart_buf.wp++;
harada_jpms 1:d2ebf1c3ae5a 662 }
harada_jpms 1:d2ebf1c3ae5a 663 }
harada_jpms 1:d2ebf1c3ae5a 664
harada_jpms 1:d2ebf1c3ae5a 665 if( pc_uart_buf.data_cnt > 0 )
harada_jpms 1:d2ebf1c3ae5a 666 {
harada_jpms 1:d2ebf1c3ae5a 667 unsigned int len = pc_uart_buf.data_cnt;
harada_jpms 1:d2ebf1c3ae5a 668 for( c=0; c<len; c++ )
harada_jpms 1:d2ebf1c3ae5a 669 {
harada_jpms 1:d2ebf1c3ae5a 670 rdat = pc_uart_buf.buf[pc_uart_buf.rp];
harada_jpms 1:d2ebf1c3ae5a 671 pc_uart_buf.data_cnt--;
harada_jpms 1:d2ebf1c3ae5a 672
harada_jpms 1:d2ebf1c3ae5a 673 if( pc_uart_buf.rp == SIO_BUF_SIZE-1 )
harada_jpms 1:d2ebf1c3ae5a 674 {
harada_jpms 1:d2ebf1c3ae5a 675 pc_uart_buf.rp = 0;
harada_jpms 1:d2ebf1c3ae5a 676 }
harada_jpms 1:d2ebf1c3ae5a 677 else
harada_jpms 1:d2ebf1c3ae5a 678 {
harada_jpms 1:d2ebf1c3ae5a 679 pc_uart_buf.rp++;
harada_jpms 1:d2ebf1c3ae5a 680 }
harada_jpms 1:d2ebf1c3ae5a 681
harada_jpms 1:d2ebf1c3ae5a 682 if( rdat != '\n' )
harada_jpms 1:d2ebf1c3ae5a 683 {
harada_jpms 1:d2ebf1c3ae5a 684 pc_cmd_buf.buf[pc_cmd_buf.data_cnt++] = rdat;
harada_jpms 1:d2ebf1c3ae5a 685 }
harada_jpms 1:d2ebf1c3ae5a 686
harada_jpms 1:d2ebf1c3ae5a 687 if( rdat == '\r' )
harada_jpms 1:d2ebf1c3ae5a 688 {
harada_jpms 1:d2ebf1c3ae5a 689 int k = 0;
harada_jpms 1:d2ebf1c3ae5a 690 int l = 0;
harada_jpms 1:d2ebf1c3ae5a 691 for (i=0;i<pc_cmd_buf.data_cnt;i++)
harada_jpms 1:d2ebf1c3ae5a 692 {
harada_jpms 1:d2ebf1c3ae5a 693 if( pc_cmd_buf.buf[i] == ' ' ||
harada_jpms 1:d2ebf1c3ae5a 694 pc_cmd_buf.buf[i] == '\r' ||
harada_jpms 1:d2ebf1c3ae5a 695 pc_cmd_buf.buf[i] == '\t' )
harada_jpms 1:d2ebf1c3ae5a 696 {
harada_jpms 1:d2ebf1c3ae5a 697 pc_str[k++][l] = '\0';
harada_jpms 1:d2ebf1c3ae5a 698 l = 0;
harada_jpms 1:d2ebf1c3ae5a 699 }
harada_jpms 1:d2ebf1c3ae5a 700 else
harada_jpms 1:d2ebf1c3ae5a 701 {
harada_jpms 1:d2ebf1c3ae5a 702 pc_str[k][l++] = pc_cmd_buf.buf[i];
harada_jpms 1:d2ebf1c3ae5a 703 }
harada_jpms 1:d2ebf1c3ae5a 704 }
harada_jpms 1:d2ebf1c3ae5a 705
harada_jpms 1:d2ebf1c3ae5a 706 if( pc_cmd_buf.data_cnt == 1 )
harada_jpms 1:d2ebf1c3ae5a 707 {
harada_jpms 1:d2ebf1c3ae5a 708 k = 0;
harada_jpms 1:d2ebf1c3ae5a 709 }
harada_jpms 1:d2ebf1c3ae5a 710
harada_jpms 1:d2ebf1c3ae5a 711 pc_cmd_buf.data_cnt = 0;
harada_jpms 1:d2ebf1c3ae5a 712 pc_cmd_buf.buf[0] = '\0';
harada_jpms 1:d2ebf1c3ae5a 713
harada_jpms 1:d2ebf1c3ae5a 714 if (k > 0)
harada_jpms 1:d2ebf1c3ae5a 715 {
harada_jpms 1:d2ebf1c3ae5a 716 int ret;
harada_jpms 1:d2ebf1c3ae5a 717 int cmd_no = 0xFF;
harada_jpms 1:d2ebf1c3ae5a 718
harada_jpms 1:d2ebf1c3ae5a 719 for( j=0; j<CMD_NUM; j++ )
harada_jpms 1:d2ebf1c3ae5a 720 {
harada_jpms 1:d2ebf1c3ae5a 721 ret = 1;
harada_jpms 1:d2ebf1c3ae5a 722
harada_jpms 1:d2ebf1c3ae5a 723 if( strlen(pc_str[0]) > 0 )
harada_jpms 1:d2ebf1c3ae5a 724 {
harada_jpms 1:d2ebf1c3ae5a 725 for( i=0; i<strlen(pc_str[0]); i++ )
harada_jpms 1:d2ebf1c3ae5a 726 {
harada_jpms 1:d2ebf1c3ae5a 727 if( pc_str[0][i] != pc_str2[j][i] )
harada_jpms 1:d2ebf1c3ae5a 728 {
harada_jpms 1:d2ebf1c3ae5a 729 ret = 0;
harada_jpms 1:d2ebf1c3ae5a 730 }
harada_jpms 1:d2ebf1c3ae5a 731 }
harada_jpms 1:d2ebf1c3ae5a 732
harada_jpms 1:d2ebf1c3ae5a 733 if( ret )
harada_jpms 1:d2ebf1c3ae5a 734 {
harada_jpms 1:d2ebf1c3ae5a 735 cmd_no = j;
harada_jpms 1:d2ebf1c3ae5a 736 break;
harada_jpms 1:d2ebf1c3ae5a 737 }
harada_jpms 1:d2ebf1c3ae5a 738 }
harada_jpms 1:d2ebf1c3ae5a 739 }
harada_jpms 1:d2ebf1c3ae5a 740
harada_jpms 1:d2ebf1c3ae5a 741 // コマンド START
harada_jpms 1:d2ebf1c3ae5a 742 if (cmd_no == 0)
harada_jpms 1:d2ebf1c3ae5a 743 {
harada_jpms 1:d2ebf1c3ae5a 744 ble_write( "START\r" );
harada_jpms 1:d2ebf1c3ae5a 745
harada_jpms 1:d2ebf1c3ae5a 746 pc.printf( "START OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 747 }
harada_jpms 1:d2ebf1c3ae5a 748 // コマンド STOP
harada_jpms 1:d2ebf1c3ae5a 749 else if( cmd_no == 1 )
harada_jpms 1:d2ebf1c3ae5a 750 {
harada_jpms 1:d2ebf1c3ae5a 751 ble_write( "STOP\r" );
harada_jpms 1:d2ebf1c3ae5a 752
harada_jpms 1:d2ebf1c3ae5a 753 pc.printf( "STOP OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 754 }
harada_jpms 1:d2ebf1c3ae5a 755 // コマンド
harada_jpms 1:d2ebf1c3ae5a 756 else if (cmd_no == 2)
harada_jpms 1:d2ebf1c3ae5a 757 {
harada_jpms 1:d2ebf1c3ae5a 758
harada_jpms 1:d2ebf1c3ae5a 759 }
harada_jpms 1:d2ebf1c3ae5a 760 // コマンド MSET
harada_jpms 1:d2ebf1c3ae5a 761 else if( cmd_no == 3 )
harada_jpms 1:d2ebf1c3ae5a 762 {
harada_jpms 1:d2ebf1c3ae5a 763 mac_1 = atoh(pc_str[1], strlen(pc_str[1]));
harada_jpms 1:d2ebf1c3ae5a 764 mac_2 = atoh(pc_str[2], strlen(pc_str[2]));
harada_jpms 1:d2ebf1c3ae5a 765 mac_3 = atoh(pc_str[3], strlen(pc_str[3]));
harada_jpms 1:d2ebf1c3ae5a 766
harada_jpms 1:d2ebf1c3ae5a 767 pc.printf( "MSET OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 768 }
harada_jpms 1:d2ebf1c3ae5a 769 // コマンド
harada_jpms 1:d2ebf1c3ae5a 770 else if( cmd_no == 4 )
harada_jpms 1:d2ebf1c3ae5a 771 {
harada_jpms 1:d2ebf1c3ae5a 772
harada_jpms 1:d2ebf1c3ae5a 773 }
harada_jpms 1:d2ebf1c3ae5a 774 // コマンド
harada_jpms 1:d2ebf1c3ae5a 775 else if( cmd_no == 5 )
harada_jpms 1:d2ebf1c3ae5a 776 {
harada_jpms 1:d2ebf1c3ae5a 777
harada_jpms 1:d2ebf1c3ae5a 778 }
harada_jpms 1:d2ebf1c3ae5a 779 // コマンド
harada_jpms 1:d2ebf1c3ae5a 780 else if( cmd_no == 6 )
harada_jpms 1:d2ebf1c3ae5a 781 {
harada_jpms 1:d2ebf1c3ae5a 782
harada_jpms 1:d2ebf1c3ae5a 783 }
harada_jpms 1:d2ebf1c3ae5a 784 // コマンド ISETL
harada_jpms 1:d2ebf1c3ae5a 785 else if( cmd_no == 7 )
harada_jpms 1:d2ebf1c3ae5a 786 {
harada_jpms 1:d2ebf1c3ae5a 787 int id_LH = atoh(pc_str[1], strlen(pc_str[1]));
harada_jpms 1:d2ebf1c3ae5a 788 int id_LL = atoh(pc_str[2], strlen(pc_str[2]));
harada_jpms 1:d2ebf1c3ae5a 789
harada_jpms 1:d2ebf1c3ae5a 790 char buf[BFSIZE];
harada_jpms 1:d2ebf1c3ae5a 791
harada_jpms 1:d2ebf1c3ae5a 792 sprintf( buf, "L %8X %8X\r", id_LH, id_LL );
harada_jpms 1:d2ebf1c3ae5a 793
harada_jpms 1:d2ebf1c3ae5a 794 ble_write( buf );
harada_jpms 1:d2ebf1c3ae5a 795
harada_jpms 1:d2ebf1c3ae5a 796 pc.printf( "ISETL OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 797 }
harada_jpms 1:d2ebf1c3ae5a 798 // コマンド ISETR
harada_jpms 1:d2ebf1c3ae5a 799 else if( cmd_no == 8 )
harada_jpms 1:d2ebf1c3ae5a 800 {
harada_jpms 1:d2ebf1c3ae5a 801 int id_RH = atoh(pc_str[1], strlen(pc_str[1]));
harada_jpms 1:d2ebf1c3ae5a 802 int id_RL = atoh(pc_str[2], strlen(pc_str[2]));
harada_jpms 1:d2ebf1c3ae5a 803
harada_jpms 1:d2ebf1c3ae5a 804 char buf[BFSIZE];
harada_jpms 1:d2ebf1c3ae5a 805
harada_jpms 1:d2ebf1c3ae5a 806 sprintf( buf, "R %8X %8X\r", id_RH, id_RL );
harada_jpms 1:d2ebf1c3ae5a 807
harada_jpms 1:d2ebf1c3ae5a 808 ble_write( buf );
harada_jpms 1:d2ebf1c3ae5a 809
harada_jpms 1:d2ebf1c3ae5a 810 pc.printf( "ISETR OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 811 }
harada_jpms 1:d2ebf1c3ae5a 812 // コマンド
harada_jpms 1:d2ebf1c3ae5a 813 else if( cmd_no == 9 )
harada_jpms 1:d2ebf1c3ae5a 814 {
harada_jpms 1:d2ebf1c3ae5a 815
harada_jpms 1:d2ebf1c3ae5a 816 }
harada_jpms 1:d2ebf1c3ae5a 817 // コマンド
harada_jpms 1:d2ebf1c3ae5a 818 else if( cmd_no == 10 )
harada_jpms 1:d2ebf1c3ae5a 819 {
harada_jpms 1:d2ebf1c3ae5a 820
harada_jpms 1:d2ebf1c3ae5a 821 }
harada_jpms 1:d2ebf1c3ae5a 822 // コマンド CONNECT
harada_jpms 1:d2ebf1c3ae5a 823 else if( cmd_no == 11 )
harada_jpms 1:d2ebf1c3ae5a 824 {
harada_jpms 1:d2ebf1c3ae5a 825 // CONNECT処理追加
harada_jpms 1:d2ebf1c3ae5a 826
harada_jpms 1:d2ebf1c3ae5a 827 pc.printf( "CONNECT OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 828 }
harada_jpms 1:d2ebf1c3ae5a 829 // コマンド DISC
harada_jpms 1:d2ebf1c3ae5a 830 else if( cmd_no == 12 )
harada_jpms 1:d2ebf1c3ae5a 831 {
harada_jpms 1:d2ebf1c3ae5a 832 // DISC処理追加
harada_jpms 1:d2ebf1c3ae5a 833
harada_jpms 1:d2ebf1c3ae5a 834 pc.printf( "DISC OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 835 }
harada_jpms 1:d2ebf1c3ae5a 836 // コマンド INTVL
harada_jpms 1:d2ebf1c3ae5a 837 else if( cmd_no == 13 )
harada_jpms 1:d2ebf1c3ae5a 838 {
harada_jpms 1:d2ebf1c3ae5a 839 unsigned int interval = atow(pc_str[1], strlen(pc_str[1]));
harada_jpms 1:d2ebf1c3ae5a 840
harada_jpms 1:d2ebf1c3ae5a 841 char buf[BFSIZE];
harada_jpms 1:d2ebf1c3ae5a 842 sprintf( buf, "INTVL %d\r", interval );
harada_jpms 1:d2ebf1c3ae5a 843 ble_write( buf );
harada_jpms 1:d2ebf1c3ae5a 844
harada_jpms 1:d2ebf1c3ae5a 845 pc.printf( "INTVL OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 846 }
harada_jpms 1:d2ebf1c3ae5a 847 // コマンド NTC
harada_jpms 1:d2ebf1c3ae5a 848 else if( cmd_no == 14 )
harada_jpms 1:d2ebf1c3ae5a 849 {
harada_jpms 1:d2ebf1c3ae5a 850 unsigned int not_touch_cnt = atow(pc_str[1], strlen(pc_str[1]));
harada_jpms 1:d2ebf1c3ae5a 851
harada_jpms 1:d2ebf1c3ae5a 852 char buf[BFSIZE];
harada_jpms 1:d2ebf1c3ae5a 853 sprintf( buf, "NTC %d\r", not_touch_cnt );
harada_jpms 1:d2ebf1c3ae5a 854 ble_write( buf );
harada_jpms 1:d2ebf1c3ae5a 855
harada_jpms 1:d2ebf1c3ae5a 856 pc.printf( "NTC OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 857 }
harada_jpms 1:d2ebf1c3ae5a 858 // コマンド OTC
harada_jpms 1:d2ebf1c3ae5a 859 else if( cmd_no == 15 )
harada_jpms 1:d2ebf1c3ae5a 860 {
harada_jpms 1:d2ebf1c3ae5a 861 unsigned int touch_cnt = atow(pc_str[1], strlen(pc_str[1]));
harada_jpms 1:d2ebf1c3ae5a 862
harada_jpms 1:d2ebf1c3ae5a 863 char buf[BFSIZE];
harada_jpms 1:d2ebf1c3ae5a 864 sprintf( buf, "OTC %d\r", touch_cnt );
harada_jpms 1:d2ebf1c3ae5a 865 ble_write( buf );
harada_jpms 1:d2ebf1c3ae5a 866
harada_jpms 1:d2ebf1c3ae5a 867 pc.printf( "OTC OK\r\n" );
harada_jpms 1:d2ebf1c3ae5a 868 }
harada_jpms 1:d2ebf1c3ae5a 869 // コマンド
harada_jpms 1:d2ebf1c3ae5a 870 else if( cmd_no == 16 )
harada_jpms 1:d2ebf1c3ae5a 871 {
harada_jpms 1:d2ebf1c3ae5a 872
harada_jpms 1:d2ebf1c3ae5a 873 }
harada_jpms 1:d2ebf1c3ae5a 874 // コマンド
harada_jpms 1:d2ebf1c3ae5a 875 else if( cmd_no == 17 )
harada_jpms 1:d2ebf1c3ae5a 876 {
harada_jpms 1:d2ebf1c3ae5a 877
harada_jpms 1:d2ebf1c3ae5a 878 }
harada_jpms 1:d2ebf1c3ae5a 879 // コマンド IDGET
harada_jpms 1:d2ebf1c3ae5a 880 else if( cmd_no == 18 )
harada_jpms 1:d2ebf1c3ae5a 881 {
harada_jpms 1:d2ebf1c3ae5a 882 ble_write( "IDGET\r\n" );
harada_jpms 1:d2ebf1c3ae5a 883 }
harada_jpms 1:d2ebf1c3ae5a 884 // コマンド
harada_jpms 1:d2ebf1c3ae5a 885 else if( cmd_no == 19 )
harada_jpms 1:d2ebf1c3ae5a 886 {
harada_jpms 1:d2ebf1c3ae5a 887
harada_jpms 1:d2ebf1c3ae5a 888 }
harada_jpms 1:d2ebf1c3ae5a 889 // コマンド
harada_jpms 1:d2ebf1c3ae5a 890 else if( cmd_no == 20 )
harada_jpms 1:d2ebf1c3ae5a 891 {
harada_jpms 1:d2ebf1c3ae5a 892
harada_jpms 1:d2ebf1c3ae5a 893 }
harada_jpms 1:d2ebf1c3ae5a 894 // コマンド
harada_jpms 1:d2ebf1c3ae5a 895 else if( cmd_no == 21 )
harada_jpms 1:d2ebf1c3ae5a 896 {
harada_jpms 1:d2ebf1c3ae5a 897
harada_jpms 1:d2ebf1c3ae5a 898 }
harada_jpms 1:d2ebf1c3ae5a 899 // コマンド
harada_jpms 1:d2ebf1c3ae5a 900 else if( cmd_no == 22 )
harada_jpms 1:d2ebf1c3ae5a 901 {
harada_jpms 1:d2ebf1c3ae5a 902
harada_jpms 1:d2ebf1c3ae5a 903 }
harada_jpms 1:d2ebf1c3ae5a 904 else
harada_jpms 1:d2ebf1c3ae5a 905 {
harada_jpms 1:d2ebf1c3ae5a 906 pc.printf("CMD_ERR\r");
harada_jpms 1:d2ebf1c3ae5a 907 }
harada_jpms 1:d2ebf1c3ae5a 908 }
harada_jpms 1:d2ebf1c3ae5a 909 }
harada_jpms 1:d2ebf1c3ae5a 910 }
harada_jpms 1:d2ebf1c3ae5a 911 }
harada_jpms 1:d2ebf1c3ae5a 912 }
harada_jpms 1:d2ebf1c3ae5a 913
harada_jpms 1:d2ebf1c3ae5a 914 void ble_write(char* dat)
harada_jpms 1:d2ebf1c3ae5a 915 {
harada_jpms 1:d2ebf1c3ae5a 916 uint8_t linebf_irq[BFSIZE];
harada_jpms 1:d2ebf1c3ae5a 917
harada_jpms 1:d2ebf1c3ae5a 918 sprintf( (char *)linebf_irq, "%s", dat);
harada_jpms 1:d2ebf1c3ae5a 919
harada_jpms 1:d2ebf1c3ae5a 920 if( connected2server == true )
harada_jpms 1:d2ebf1c3ae5a 921 {
harada_jpms 1:d2ebf1c3ae5a 922 uartTXCharacteristic.write(NUM_ONCE, linebf_irq);
harada_jpms 1:d2ebf1c3ae5a 923 }
harada_jpms 1:d2ebf1c3ae5a 924 }