|
|
@@ -62,6 +62,10 @@ typedef struct {
|
|
|
int tmr;
|
|
|
int lang;
|
|
|
|
|
|
+ int ph_in;
|
|
|
+ int ph_out;
|
|
|
+ int ch_out;
|
|
|
+ int ch_max;
|
|
|
menu_data_t menu;
|
|
|
|
|
|
uint64_t ms;
|
|
|
@@ -83,49 +87,22 @@ static uint64_t get_ms(void)
|
|
|
gettimeofday(&tv, NULL);
|
|
|
return (uint64_t)(tv.tv_sec)*1000 + (uint64_t)(tv.tv_usec)/1000;
|
|
|
}
|
|
|
-static void refresh_handler(void *arg, int last)
|
|
|
+static int get_ch_max(void)
|
|
|
{
|
|
|
- menu_handle_t *h=(menu_handle_t*)arg;
|
|
|
- h->uflag |= UFLAG_TIMER;
|
|
|
+ int ch=0;
|
|
|
+ GlobalPowerManger *tmp;
|
|
|
+ GlobalDeviceManager *dm=get_dm();
|
|
|
|
|
|
- if(last) {
|
|
|
- timer_stop(h->tmr);
|
|
|
+ if(list_empty(&dm->_globalPowerManger.list)) {
|
|
|
+ return 0;
|
|
|
}
|
|
|
-}
|
|
|
-static void tmr_start(menu_handle_t *h, int ms)
|
|
|
-{
|
|
|
- if(h->tmr!=-1) {
|
|
|
- timer_stop(h->tmr);
|
|
|
+ list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
|
|
|
+ {
|
|
|
+ ch++;
|
|
|
}
|
|
|
- timer_start(h->tmr, ms, -1, refresh_handler, h);
|
|
|
-}
|
|
|
-static void tmr_stop(menu_handle_t *h)
|
|
|
-{
|
|
|
- timer_stop(h->tmr);
|
|
|
- h->tmr = -1;
|
|
|
-}
|
|
|
-
|
|
|
-static void menu_system_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
-{
|
|
|
- char time[60],tmp[100];
|
|
|
-
|
|
|
- lcd_fill(0);
|
|
|
- sprintf(tmp, "SmartPDU");
|
|
|
- lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
|
|
|
-
|
|
|
- sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_VER), VERSION);
|
|
|
- lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
-
|
|
|
- get_curtime_str2(time, sizeof(time));
|
|
|
- sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_TIME), time);
|
|
|
- lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
-
|
|
|
- sprintf(tmp, "IP:%s", getLocalIpAddress("eth0"));
|
|
|
- lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
- lcd_refresh();
|
|
|
+ return ch;
|
|
|
}
|
|
|
-
|
|
|
-static int is_pwrin_3(GlobalDeviceManager *dm)
|
|
|
+static int is_ph3_in(GlobalDeviceManager *dm)
|
|
|
{
|
|
|
if ((dm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree ||
|
|
|
dm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One ||
|
|
|
@@ -134,20 +111,19 @@ static int is_pwrin_3(GlobalDeviceManager *dm)
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
-static int is_pwrout_3(GlobalDeviceManager *dm)
|
|
|
+static int is_ph3_out(GlobalDeviceManager *dm)
|
|
|
{
|
|
|
if (dm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree) {
|
|
|
return 1;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
static int get_input(GlobalDeviceManager *dm, int ph, PowerInfo *info)
|
|
|
{
|
|
|
int i=0;
|
|
|
GlobalTreeACManager *tmp3=NULL;
|
|
|
|
|
|
- if (is_pwrin_3(dm)) {
|
|
|
+ if (is_ph3_in(dm)) {
|
|
|
if(list_empty(&dm->_globalPowerManger.list_Tree_AC)) {
|
|
|
return -1;
|
|
|
}
|
|
|
@@ -166,7 +142,6 @@ static int get_input(GlobalDeviceManager *dm, int ph, PowerInfo *info)
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
static int get_output(GlobalDeviceManager *dm, int ch, int ph, PowerInfo *info)
|
|
|
{
|
|
|
int i=0,j=0;
|
|
|
@@ -177,7 +152,7 @@ static int get_output(GlobalDeviceManager *dm, int ch, int ph, PowerInfo *info)
|
|
|
{
|
|
|
i++;
|
|
|
if (i==ch) {
|
|
|
- if (is_pwrout_3(dm)) {
|
|
|
+ if (is_ph3_out(dm)) {
|
|
|
list_for_each_entry(tmp3, &tmp->list_Tree_AC, list_Tree_AC)
|
|
|
{
|
|
|
j++;
|
|
|
@@ -195,90 +170,150 @@ static int get_output(GlobalDeviceManager *dm, int ch, int ph, PowerInfo *info)
|
|
|
|
|
|
return -1;
|
|
|
}
|
|
|
-static void menu_input_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
+static void refresh_handler(void *arg, int last)
|
|
|
{
|
|
|
- int r;
|
|
|
- char tmp[100];
|
|
|
- PowerInfo *pwr,info;
|
|
|
- GlobalDeviceManager *dm=get_dm();
|
|
|
-
|
|
|
- r = get_input(dm, 0, &info);
|
|
|
- if(r) {
|
|
|
- return;
|
|
|
+ menu_handle_t *h=(menu_handle_t*)arg;
|
|
|
+ h->uflag |= UFLAG_TIMER;
|
|
|
+
|
|
|
+ if(last) {
|
|
|
+ timer_stop(h->tmr);
|
|
|
+ }
|
|
|
+}
|
|
|
+static void tmr_start(menu_handle_t *h, int ms)
|
|
|
+{
|
|
|
+ if(h->tmr!=-1) {
|
|
|
+ timer_stop(h->tmr);
|
|
|
}
|
|
|
- pwr = &info;
|
|
|
+ timer_start(h->tmr, ms, -1, refresh_handler, h);
|
|
|
+}
|
|
|
+static void tmr_stop(menu_handle_t *h)
|
|
|
+{
|
|
|
+ timer_stop(h->tmr);
|
|
|
+ h->tmr = -1;
|
|
|
+}
|
|
|
|
|
|
+static void menu_system_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
+{
|
|
|
+ char time[60],tmp[100];
|
|
|
+
|
|
|
lcd_fill(0);
|
|
|
- sprintf(tmp, "%s", lang_get_str(h->lang, STR_ID_INPUT));
|
|
|
+ sprintf(tmp, "SmartPDU");
|
|
|
lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
|
|
|
|
|
|
-#ifdef TEXT_ALIGN
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pwr->voltage);
|
|
|
- lcd_draw_string(0, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
- lcd_draw_string(LCD_WIDTH/2, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
-
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power);
|
|
|
- lcd_draw_string(0, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
- lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
-#else
|
|
|
- sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pwr->voltage, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
+ sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_VER), VERSION);
|
|
|
lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
|
|
|
- sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
+ get_curtime_str2(time, sizeof(time));
|
|
|
+ sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_TIME), time);
|
|
|
lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
-#endif
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
|
- lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
|
|
|
+ sprintf(tmp, "IP:%s", getLocalIpAddress("eth0"));
|
|
|
+ lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
lcd_refresh();
|
|
|
+
|
|
|
+ if(h->menu.menu_lv==0 && h->uflag&UFLAG_FLIP) {
|
|
|
+ h->menu.menu_id++;
|
|
|
+ }
|
|
|
}
|
|
|
-static void menu_output_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
+static void menu_input_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
{
|
|
|
int r;
|
|
|
char tmp[100];
|
|
|
PowerInfo *pwr,info;
|
|
|
GlobalDeviceManager *dm=get_dm();
|
|
|
|
|
|
- r = get_output(dm, 0, 0, &info);
|
|
|
- if(r) {
|
|
|
- return;
|
|
|
- }
|
|
|
- pwr = &info;
|
|
|
-
|
|
|
- lcd_fill(0);
|
|
|
- sprintf(tmp, "%s CH3", lang_get_str(h->lang, STR_ID_OUTPUT));
|
|
|
- lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
|
|
|
-
|
|
|
- char *pon=((pwr->status)?lang_get_str(h->lang, STR_ID_ON):lang_get_str(h->lang, STR_ID_OFF));
|
|
|
-#ifdef TEXT_ALIGN
|
|
|
- sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_SWITCH), pon);
|
|
|
- lcd_draw_string(0, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
- lcd_draw_string(LCD_WIDTH/2, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ r = get_input(dm, h->ph_in, &info);
|
|
|
+ if(r==0) {
|
|
|
+ pwr = &info;
|
|
|
+ if(is_ph3_in(dm)) {
|
|
|
+ h->ph_in = (h->ph_in+1)%3;
|
|
|
+ }
|
|
|
|
|
|
- sprintf(tmp, "%s:%0.2f ", lang_get_str(h->lang, STR_ID_POWER), pwr->power);
|
|
|
- lcd_draw_string(0, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
- lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
-#else
|
|
|
- sprintf(tmp, "%s:%s %s:%0.2f", lang_get_str(h->lang, STR_ID_SWITCH), pon, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
- lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ lcd_fill(0);
|
|
|
+ sprintf(tmp, "%s", lang_get_str(h->lang, STR_ID_INPUT));
|
|
|
+ lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ #ifdef TEXT_ALIGN
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pwr->voltage);
|
|
|
+ lcd_draw_string(0, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
+ lcd_draw_string(LCD_WIDTH/2, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power);
|
|
|
+ lcd_draw_string(0, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
+ lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ #else
|
|
|
+ sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pwr->voltage, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
+ lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
+ lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ #endif
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
|
+ lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ lcd_refresh();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ h->ph_in = 0;
|
|
|
+ if(h->menu.menu_lv==0 && h->uflag&UFLAG_FLIP) {
|
|
|
+ h->menu.menu_id++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+static void menu_output_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
+{
|
|
|
+ int r;
|
|
|
+ char tmp[100];
|
|
|
+ PowerInfo *pwr,info;
|
|
|
+ GlobalDeviceManager *dm=get_dm();
|
|
|
|
|
|
- sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
- lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
-#endif
|
|
|
- sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
|
- lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ r = get_output(dm, h->ch_out, h->ph_out, &info);
|
|
|
+ if(r==0) {
|
|
|
+ pwr = &info;
|
|
|
+ h->ch_out = (h->ch_out+1)%h->ch_max;
|
|
|
+ if(is_ph3_out(dm)) {
|
|
|
+ h->ph_out = (h->ph_out+1)%3;
|
|
|
+ }
|
|
|
|
|
|
- lcd_refresh();
|
|
|
+ lcd_fill(0);
|
|
|
+ sprintf(tmp, "%s CH3", lang_get_str(h->lang, STR_ID_OUTPUT));
|
|
|
+ lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ char *pon=((pwr->status)?lang_get_str(h->lang, STR_ID_ON):lang_get_str(h->lang, STR_ID_OFF));
|
|
|
+ #ifdef TEXT_ALIGN
|
|
|
+ sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_SWITCH), pon);
|
|
|
+ lcd_draw_string(0, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
+ lcd_draw_string(LCD_WIDTH/2, item_h, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ sprintf(tmp, "%s:%0.2f ", lang_get_str(h->lang, STR_ID_POWER), pwr->power);
|
|
|
+ lcd_draw_string(0, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
+ lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ #else
|
|
|
+ sprintf(tmp, "%s:%s %s:%0.2f", lang_get_str(h->lang, STR_ID_SWITCH), pon, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
+ lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
+ lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+ #endif
|
|
|
+ sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
|
+ lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
+
|
|
|
+ lcd_refresh();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ h->ch_out = 0;
|
|
|
+ if(h->menu.menu_lv==0 && h->uflag&UFLAG_FLIP) {
|
|
|
+ h->menu.menu_id++;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
static void menu_sensor_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
{
|
|
|
char tmp[100];
|
|
|
- PowerInfo ttt;
|
|
|
- PowerInfo *pwr=&ttt;
|
|
|
GlobalDeviceManager *dm=get_dm();
|
|
|
|
|
|
lcd_fill(0);
|
|
|
@@ -304,6 +339,10 @@ static void menu_sensor_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
#endif
|
|
|
|
|
|
lcd_refresh();
|
|
|
+
|
|
|
+ if(h->menu.menu_lv==0 && h->uflag&UFLAG_FLIP) {
|
|
|
+ h->menu.menu_id++;
|
|
|
+ }
|
|
|
}
|
|
|
static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv)
|
|
|
{
|
|
|
@@ -377,7 +416,7 @@ static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv
|
|
|
}
|
|
|
else {
|
|
|
h->menu.menu_lv = 2;
|
|
|
- tmr_start(h, 300);
|
|
|
+ tmr_start(h, 500);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
@@ -475,6 +514,10 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
lcd_draw_string(LCD_WIDTH/2, item_h*3, LCD_WIDTH/2, item_h, tmp, font2, font_color, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
|
|
|
|
|
|
lcd_refresh();
|
|
|
+
|
|
|
+ if(h->menu.menu_lv==0 && h->uflag&UFLAG_FLIP) {
|
|
|
+ h->menu.menu_id = MENU_SYSTEM;
|
|
|
+ }
|
|
|
}
|
|
|
/////////////////////////////////////////////////
|
|
|
|
|
|
@@ -490,6 +533,9 @@ int menu_init(void)
|
|
|
h->uflag = 1;
|
|
|
h->fliptime = get_dm()->_globalDevInfo.misc.flip_time*1000;
|
|
|
|
|
|
+ h->ph_in = 0;
|
|
|
+ h->ph_out = 0;
|
|
|
+ h->ch_out = 0;
|
|
|
h->menu.menu_id = 0;
|
|
|
h->menu.menu_lv = 0;
|
|
|
for(i=0; i<MENU_MAX; i++) {
|
|
|
@@ -535,10 +581,10 @@ int menu_handle(void)
|
|
|
if(kv.type==TYPE_SHORT) {
|
|
|
if(h->menu.menu_lv==0) {
|
|
|
if(lcd_get_angle()==ANGLE_0) {
|
|
|
- lcd_rotate(ANGLE_180);
|
|
|
+ //lcd_rotate(ANGLE_180);
|
|
|
}
|
|
|
else {
|
|
|
- lcd_rotate(ANGLE_0);
|
|
|
+ //lcd_rotate(ANGLE_0);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -555,6 +601,8 @@ int menu_handle(void)
|
|
|
|
|
|
case KEY_UP:
|
|
|
{
|
|
|
+ led_reset(); beep_reset();
|
|
|
+
|
|
|
if(h->menu.menu_lv==0 && kv.type==TYPE_SHORT) {
|
|
|
if(h->menu.menu_id>0) {
|
|
|
h->menu.menu_id--;
|
|
|
@@ -569,6 +617,7 @@ int menu_handle(void)
|
|
|
|
|
|
case KEY_DOWN:
|
|
|
{
|
|
|
+ led_reset(); beep_reset();
|
|
|
if(h->menu.menu_lv==0 && kv.type==TYPE_SHORT) {
|
|
|
if(h->menu.menu_id<MENU_MAX-1) {
|
|
|
h->menu.menu_id++;
|
|
|
@@ -588,6 +637,7 @@ int menu_handle(void)
|
|
|
if(h->menu.menu_lv==0) {
|
|
|
if((get_ms()-h->ms)>=h->fliptime) {
|
|
|
if(h->menu.menu_id<MENU_MAX-1) {
|
|
|
+ if() {
|
|
|
h->menu.menu_id++;
|
|
|
}
|
|
|
else {
|
|
|
@@ -617,19 +667,21 @@ int menu_handle(void)
|
|
|
|
|
|
case MENU_INPUT:
|
|
|
{
|
|
|
- //GlobalPowerInManger
|
|
|
+ h->menu.menu_id++;
|
|
|
menu_input_paint(h, font1, font2, item_h);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case MENU_OUTPUT:
|
|
|
{
|
|
|
+ h->menu.menu_id++;
|
|
|
menu_output_paint(h, font1, font2, item_h);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case MENU_SENSOR:
|
|
|
{
|
|
|
+ h->menu.menu_id++;
|
|
|
menu_sensor_paint(h, font1, font2, item_h);
|
|
|
}
|
|
|
break;
|