/******************************************************************************* * Function Name : USB_Cable_Config * Description : Software Connection/Disconnection of USB Cable. * Input : None. * Return : Status *******************************************************************************/ void USB_Cable_Config(FunctionalState NewState) { if (NewState != DISABLE) USB_CONNECTED(); else USB_DISCONNECTED(); }
void global_update() { static bool lastUsbConnected; static bool lastCharging; static millis8_t lastCheck; millis8_t now = millis(); if((millis8_t)(now - lastCheck) < 150) return; lastCheck = now; bool usbConnected = USB_CONNECTED(); bool charging = CHARGING(); if(usbConnected != lastUsbConnected) { lastUsbConnected = usbConnected; tune_play(usbConnected ? tuneUsbPlugin : tuneUsbUnplug, VOL_UI, PRIO_UI); } if(charging != lastCharging) { lastCharging = charging; if(!charging && usbConnected) { tune_play(tuneUsbCharged, VOL_UI, PRIO_UI); // save time ONLY WHEN USB UNPLUGGED memcpy(&chargeFinishTime, &timeData, sizeof(time_s)); } } }
static display_t draw() { #if COMPILE_ANIMATIONS static byte usbImagePos = FRAME_HEIGHT; static byte chargeImagePos = FRAME_HEIGHT; #endif // Draw date drawDate(); // Draw time animated display_t busy = ticker(); // Draw battery icon drawBattery(); byte fix = 20; // Draw USB icon image_s icon = newImage(fix, FRAME_HEIGHT - 9, usbIcon, 16, 8, WHITE, NOINVERT, 0); draw_bitmap_set(&icon); #if COMPILE_ANIMATIONS if(animateIcon(USB_CONNECTED(), &usbImagePos)) { icon.y = usbImagePos; draw_bitmap_s2(NULL); icon.x += 20; } #else if(USB_CONNECTED()) { draw_bitmap_s2(NULL); icon.x += 20; } #endif // Draw charging icon icon.width = 8; #if COMPILE_ANIMATIONS if(animateIcon(CHARGING(), &chargeImagePos)) { icon.bitmap = chargeIcon; icon.y = chargeImagePos; draw_bitmap_s2(NULL); icon.x += 12; } #else if(CHARGING()) { icon.bitmap = chargeIcon; draw_bitmap_s2(NULL); icon.x += 12; } #endif icon.y = FRAME_HEIGHT - 8; #if COMPILE_STOPWATCH // Stopwatch icon if(stopwatch_active()) { icon.bitmap = stopwatch; draw_bitmap_s2(&icon); icon.x += 12; } #endif // Draw next alarm alarm_s nextAlarm; if(alarm_getNext(&nextAlarm)) { time_s alarmTime; alarmTime.hour = nextAlarm.hour; alarmTime.mins = nextAlarm.min; alarmTime.ampm = CHAR_24; time_timeMode(&alarmTime, appConfig.timeMode); char buff[9]; sprintf_P(buff, PSTR("%02hhu:%02hhu%c"), alarmTime.hour, alarmTime.mins, alarmTime.ampm); draw_string(buff, false, icon.x, FRAME_HEIGHT - 8); icon.x += (alarmTime.ampm == CHAR_24) ? 35 : 42; icon.bitmap = dowImg[alarm_getNextDay()]; draw_bitmap_s2(&icon); // icon.x += 9; } return busy; }