/** * @fn sensorTag_BattDisp * * @brief * * @param * * @return */ static void sensorTag_BattDisp(unsigned char level) { oled_set_font(&icon16x16); switch (level) { case 7: // battery charge if (charge_cnt < 3) { charge_cnt++; } else { charge_cnt = 0; if (pwmgr == PWMGR_S1) { switch (charge_icon) { case 0: oled_draw_icon(2, 44, 7); break; case 1: oled_draw_icon(2, 44, 8); break; case 2: oled_draw_icon(2, 44, 9); break; case 3: oled_draw_icon(2, 44, 10); break; case 4: oled_draw_icon(2, 44, 11); break; case 5: oled_draw_icon(2, 44, 12); break; } if (++charge_icon > 5) { charge_icon = 0; } } else { oled_set_font(&bigbatt40x32); switch (charge_icon) { case 0: oled_draw_icon(0, 12, 0); break; case 1: oled_draw_icon(0, 12, 1); break; case 2: oled_draw_icon(0, 12, 2); break; case 3: oled_draw_icon(0, 12, 3); break; } if (++charge_icon > 3) { charge_icon = 0; } } } break; case 6: oled_draw_icon(2, 44, 12); break; // battery full case 5: oled_draw_icon(2, 44, 11); break; case 4: oled_draw_icon(2, 44, 10); break; case 3: oled_draw_icon(2, 44, 9); break; case 2: oled_draw_icon(2, 44, 8); break; case 1: oled_draw_icon(2, 44, 7); break; // battery empty case 0: // battery shutdown oled_set_font(&bigbatt40x32); oled_draw_icon(0, 12, 4); break; } }
void menu_draw(void) { unsigned y, i; if ( menu_o.current_dialog == CLOCK_DIALOG ) { draw_hm(&oled_o, &clk_o); } else { const char *m = menu_dialog_list[menu_o.current_dialog]; oled_set_font(&oled_o, helvR12small); y = 14; for( i = 0; i < menu_o.total; i++ ) { if ( menu_o.curr == i ) { oled_draw_string(&oled_o, 0, y, ":"); } oled_draw_string(&oled_o, 10, y, m+2); if ( *m == 0xf3 || *m == 0xf2 ) { oled_draw_num(&oled_o, 100, y, 10, 1, menu_o.num[i]); } y += 16; m = menu_get_entry(m, 1); } } }
static void draw_hm(oled_t *oled, clk_t *clk) { unsigned x, y, d; y = 47; x = 0; d = 25; oled_set_font(&oled_o, logisoso46); x += oled_draw_num(oled,x,y,d,0,clk->current_time.data[2]); oled_draw_glyph(oled, x, y, ':'); x += d/2; x += oled_draw_num(oled,x,y,d,1,clk->current_time.data[1]); oled_set_font(&oled_o, helvR12small); oled_draw_num(oled,100,64,10,1,clk->current_time.data[0]); }
/** * @fn sensorTag_HandleDisp * * @brief * * @param * * @return */ static void sensorTag_HandleDisp(unsigned char mode, void *p) { VOID *p; UTCTimeStruct time; if ((mode & 0xF0) == MODE_SLEEP) { // display time sensorTag_ClockGet(&time, 0); oled_set_font(&num8x16); oled_draw_icon(1, 0, time.hour/10); oled_draw_icon(1, 8, time.hour%10); oled_draw_icon(1, 16, 10); oled_draw_icon(1, 24, time.minutes/10); oled_draw_icon(1, 32, time.minutes%10); // display sleep icon oled_set_font(&icon16x16); oled_draw_icon(0, 44, 6); // display battery sensorTag_BattDisp(batt_get_level()); return; } switch (mode & 0x0F) { case MODE_TIME: if ((mode & 0xF0) == MODE_NORMAL) { // display time sensorTag_ClockGet(&time, 0); oled_set_font(&num8x16); oled_draw_icon(1, 0, time.hour/10); oled_draw_icon(1, 8, time.hour%10); oled_draw_icon(1, 16, 10); oled_draw_icon(1, 24, time.minutes/10); oled_draw_icon(1, 32, time.minutes%10); // display clock icon oled_set_font(&icon16x16); oled_draw_icon(0, 44, 13); } else { // display chronograph sensorTag_ClockGet(&time, workout.time); oled_set_font(&num8x16); oled_draw_icon(0, 0, time.hour/10); oled_draw_icon(0, 8, time.hour%10); oled_draw_icon(0, 16, 10); oled_draw_icon(0, 24, time.minutes/10); oled_draw_icon(0, 32, time.minutes%10); oled_draw_icon(0, 40, 10); oled_draw_icon(0, 48, time.seconds/10); oled_draw_icon(0, 56, time.seconds%10); } // display battery sensorTag_BattDisp(batt_get_level()); break; case MODE_STEP: // display step icon oled_set_font(&icon16x16); if ((mode & 0xF0) == MODE_NORMAL) { oled_draw_icon(0, 44, 0); } else { oled_draw_icon(0, 44, 1); } // display step oled_set_font(&num8x16); if ((mode & 0xF0) == MODE_NORMAL) { oled_draw_num(1, 0, normal.steps); } else { oled_draw_num(1, 0, normal.steps - workout.steps); } break; case MODE_CALORIE: // display calorie icon oled_set_font(&icon16x16); if ((mode & 0xF0) == MODE_NORMAL) { oled_draw_icon(0, 44, 2); } else { oled_draw_icon(0, 44, 3); } // display calorie oled_set_font(&num8x16); if ((mode & 0xF0) == MODE_NORMAL) { oled_draw_num(1, 0, normal.calorie); } else { oled_draw_num(1, 0, workout.calorie); } break; case MODE_DISTANCE: // display distance icon oled_set_font(&icon16x16); if ((mode & 0xF0) == MODE_NORMAL) { oled_draw_icon(0, 44, 4); } else { oled_draw_icon(0, 44, 5); } // display distance oled_set_font(&num8x16); if ((mode & 0xF0) == MODE_NORMAL) { oled_draw_num(1, 0, normal.distance); } else { oled_draw_num(1, 0, workout.distance); } break; case MODE_DBG: oled_set_font(&fonts7x8); oled_gotoxy(0, 0); oled_puts("x:"); oled_puts_04x(acc[0]); oled_gotoxy(1, 0); oled_puts("y:"); oled_puts_04x(acc[1]); oled_gotoxy(2, 0); oled_puts("z:"); oled_puts_04x(acc[2]); oled_gotoxy(3, 0); oled_puts("s:"); oled_puts_05u(normal.steps); break; } }