Bluetooth5

Bluetooth5と512Hzセンサー

Bluetooth5 と 512Hzセンサー

ぶる〜とぅ〜すふぁいーぶ
ぶる〜とぅ〜すふぁいーぶ
ぶる〜とぅ〜すふぁいぶのうた〜〜〜

具なしのラーメンです。

IMG_5801.JPG

出前一丁美味しいですよね。胡麻油味。

良い感じにコードを書きます。

switch(m_new_command_received){
                case APP_CMD_CHANGE_PHY:
                {
                    m_new_command_received = APP_CMD_NOCOMMAND;

                    //printf("Attempting to change phy.\r\n");
                    gap_phys_settings.tx_phys = (m_new_phy == 0 ? BLE_GAP_PHY_1MBPS : BLE_GAP_PHY_2MBPS);
                    gap_phys_settings.rx_phys = (m_new_phy == 0 ? BLE_GAP_PHY_1MBPS : BLE_GAP_PHY_2MBPS);
#ifdef S140
                    sd_ble_gap_phy_request(m_necomimi.conn_handle, &gap_phys_settings);
#else
                    sd_ble_gap_phy_update(m_necomimi.conn_handle, &gap_phys_settings);
#endif
                }
                    break;
case APP_MODE_EEG_RAW:
              {
                if(isRawUpdated == true){
                  ble_necomimi_raw_send(&m_necomimi, (uint8_t *)rawPayload, sizeof(rawPayload));
                  isRawUpdated = false;

                  if( bleRawCounter >= BLE_RAW_COUNT_SAMPLE-1 ){
                        ble_necomimi_time_send(&m_necomimi, (uint8_t *)&bleRawCounter, (uint16_t)sizeof(bleRawCounter));                        
                        bleRawCounter = 0;
                  }
                }
              }
                break;

受信側も。

[スレッド外のどこか]

short rawDataArray2[512];

[スレッド内から参照するクラス]

extern short rawDataArray2[512];

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
{
    //NSLog(@"%@", NSStringFromSelector(_cmd));
    if(error){
        NSLog(@"[error] %@", [error localizedDescription]);
    }else{
        //NSLog(@"no error");

        __block NSData* data = characteristic.value;

        if(deviceName == nil){ return; }

        if(
           [characteristic.UUID.UUIDString isEqualToString:Necomimi_v2_raw_Characteristic_uuid] ||
           [characteristic.UUID.UUIDString isEqualToString:Necomimi_v2_raw_Characteristic_uuid2]
           ){

            static short rawData[PACKET_DATA_SIZE];
            //NSLog(@"fuga");
            [data getBytes:rawData range:NSMakeRange(0, sizeof(short)*PACKET_DATA_SIZE)];

            memcpy(&rawDataArray2[indexSize], rawData, sizeof(rawData));

            indexSize = indexSize + PACKET_DATA_SIZE;
            //[self.delegate eegRawDelegate_v2:deviceName data:(uint8_t *)rawData len:64];

extern なる魔法を唱えて、スレッドで死なないようにリフレクとかマホカンタ(ここ笑うとこ。いいね)掛けといて、1Mbps/2Mbpsで受信中はdelegateとか飛ばさずに延々とメモリ・バッファに溜め込みますね。
バッファに溜まったらファイルに書き出したりすればいいかな。しらんけど。
(ちゃんとバッファに溜めてから処理しろよ。しらんけどな)

    NSManagedObjectContext* privateMoc = [[NSManagedObjectContext alloc]
                                          initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    [privateMoc setParentContext:_managedObjectContext];

    [privateMoc performBlock:^{

ちゃんとやろうね。

にんにくのホイル焼きオススメです。