test

Dependencies:   BufferedSerial WatchdogTimer

Committer:
harada_jpms
Date:
Fri Jun 08 05:36:22 2018 +0000
Revision:
3:455575531b33
Parent:
2:a88b0b4c4f37
Child:
4:1920e4a63bde
20180608

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