void MyArduboy::beginNoLogo(void) { boot(); if (pressed(UP_BUTTON)) { sendLCDCommand(OLED_ALL_PIXELS_ON); setRGBled(255, 255, 255); power_timer0_disable(); while (true) { idle(); // infinite loop } } pTunes->initChannel(PIN_SPEAKER_1); pinMode(PIN_SPEAKER_2, OUTPUT); // trick myAudio.begin(); }
static void on_ble_write(ble_cch_t * p_cch_service, ble_evt_t * p_ble_evt) { // Decclare buffer variable to hold received data. The data can only be 32 bit long. uint32_t data_buffer; // Pupulate ble_gatts_value_t structure to hold received data and metadata. ble_gatts_value_t rx_data; rx_data.len = sizeof(uint32_t); rx_data.offset = 0; rx_data.p_value = (uint8_t*)&data_buffer; // Check if write event is performed on our characteristic or the CCCD if(p_ble_evt->evt.gatts_evt.params.write.handle == p_cch_service->charSTEP_handles.value_handle) { // Get stepper data sd_ble_gatts_value_get(p_cch_service->conn_handle, p_cch_service->charSTEP_handles.value_handle, &rx_data); if (rx_data.p_value[POSITION_byte] > MAX_STEPS) positionIwantToGo = MAX_STEPS; positionIwantToGo = rx_data.p_value[POSITION_byte]; speed = SPEED_LIMIT + (0xff - rx_data.p_value[SPEED_byte]) * 40; //speed = rx_data.p_value[SPEED_byte] * 40; } else if(p_ble_evt->evt.gatts_evt.params.write.handle == p_cch_service->charRGB_handles.value_handle) { // Get RGB data sd_ble_gatts_value_get(p_cch_service->conn_handle, p_cch_service->charRGB_handles.value_handle, &rx_data); if (rx_data.p_value[RED_byte] > 100) rx_data.p_value[RED_byte] = 100; if (rx_data.p_value[GREEN_byte] > 100) rx_data.p_value[GREEN_byte] = 100; if (rx_data.p_value[BLUE_byte] > 100) rx_data.p_value[BLUE_byte] = 100; setRGBled(rx_data.p_value[RED_byte], rx_data.p_value[GREEN_byte], rx_data.p_value[BLUE_byte]); } else if(p_ble_evt->evt.gatts_evt.params.write.handle == p_cch_service->charR_handles.value_handle) { // Get RED data sd_ble_gatts_value_get(p_cch_service->conn_handle, p_cch_service->charR_handles.value_handle, &rx_data); if (rx_data.p_value[MLED_byte] > 100) rx_data.p_value[MLED_byte] = 100; setMled(rx_data.p_value[MLED_byte]); } else if(p_ble_evt->evt.gatts_evt.params.write.handle == p_cch_service->charSTEP_handles.cccd_handle) { // Get stepper cccd data sd_ble_gatts_value_get(p_cch_service->conn_handle, p_cch_service->charSTEP_handles.cccd_handle, &rx_data); } else if(p_ble_evt->evt.gatts_evt.params.write.handle == p_cch_service->charRGB_handles.cccd_handle) { // Get RGB cccd data sd_ble_gatts_value_get(p_cch_service->conn_handle, p_cch_service->charRGB_handles.cccd_handle, &rx_data); } else if(p_ble_evt->evt.gatts_evt.params.write.handle == p_cch_service->charR_handles.cccd_handle) { // Get R cccd data sd_ble_gatts_value_get(p_cch_service->conn_handle, p_cch_service->charR_handles.cccd_handle, &rx_data); } }