試作テストバージョン
Dependencies: BLE_API TB6612FNG mbed
Fork of BLE_RCBController2 by
main.cpp
00001 #include "mbed.h" 00002 #include "BLEDevice.h" 00003 #include "RCBController.h" 00004 #include "TB6612.h" 00005 00006 #define DBG 1 00007 00008 BLEDevice ble; 00009 Serial pc(USBTX, USBRX); 00010 /* LEDs for indication: */ 00011 DigitalOut ConnectStateLed(P0_18); 00012 DigitalOut outlow(P0_20); 00013 //PwmOut ControllerStateLed(LED2); 00014 00015 TB6612 left(P0_29,P0_24,P0_23); 00016 TB6612 right(P0_28,P0_30,P0_0); 00017 00018 /* RCBController Service */ 00019 static const uint16_t RCBController_service_uuid = 0xFFF0; 00020 static const uint16_t RCBController_Characteristic_uuid = 0xFFF1; 00021 uint8_t RCBControllerPayload[10] = {0,}; 00022 00023 GattCharacteristic ControllerChar (RCBController_Characteristic_uuid,RCBControllerPayload,10, 10, 00024 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | 00025 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE); 00026 GattCharacteristic *ControllerChars[] = {&ControllerChar}; 00027 GattService RCBControllerService(RCBController_service_uuid, ControllerChars, sizeof(ControllerChars) / sizeof(GattCharacteristic *)); 00028 00029 RCBController controller; 00030 00031 void onConnected(uint16_t h) 00032 { 00033 ConnectStateLed = 0; 00034 #if DBG 00035 pc.printf("Connected\n\r"); 00036 #endif 00037 } 00038 00039 void onDisconnected(uint16_t h) 00040 { 00041 ble.startAdvertising(); 00042 ConnectStateLed = 1; 00043 #if DBG 00044 pc.printf("Disconnected\n\r"); 00045 #endif 00046 } 00047 00048 00049 // GattEvent 00050 void onDataWritten(uint16_t charHandle) 00051 { 00052 if (charHandle == ControllerChar.getHandle()) { 00053 uint16_t bytesRead; 00054 ble.readCharacteristicValue(ControllerChar.getHandle(),RCBControllerPayload, &bytesRead); 00055 memcpy( &controller.data[0], RCBControllerPayload, sizeof(controller)); 00056 #if DBG 00057 00058 pc.printf("DATA:%02X %02X %d %d %d %d %d %d %d %02X\n\r",controller.data[0],controller.data[1],controller.data[2],controller.data[3],controller.data[4], 00059 controller.data[5],controller.data[6],controller.data[7],controller.data[8],controller.data[9]); 00060 #endif 00061 left = ((float)((int)controller.status.LeftAnalogUD -128) / 128.0); 00062 right = ((float)((int)controller.status.RightAnalogUD -128) / 128.0); 00063 //ControllerStateLed = (float)controller.status.LeftAnalogLR / 255.0; 00064 } 00065 00066 } 00067 00068 /**************************************************************************/ 00069 /*! 00070 @brief Program entry point 00071 */ 00072 /**************************************************************************/ 00073 int main(void) 00074 { 00075 pc.baud(921600); 00076 00077 00078 ConnectStateLed = 1; 00079 #if DBG 00080 pc.printf("Start\n\r"); 00081 #endif 00082 outlow = 0; 00083 00084 ble.init(); 00085 ble.onConnection(onConnected); 00086 ble.onDisconnection(onDisconnected); 00087 ble.onDataWritten(onDataWritten); 00088 00089 /* setup advertising */ 00090 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); 00091 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); 00092 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, 00093 (const uint8_t *)"mbed WallbotBLE", sizeof("mbed WallbotBLE") - 1); 00094 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, 00095 (const uint8_t *)RCBController_service_uuid, sizeof(RCBController_service_uuid)); 00096 00097 ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ 00098 ble.startAdvertising(); 00099 00100 ble.addService(RCBControllerService); 00101 00102 00103 while (true) { 00104 ble.waitForEvent(); 00105 } 00106 } 00107
Generated on Tue Jul 12 2022 19:13:52 by
1.7.2
