|
@@ -93,7 +93,7 @@ static int get_ch_max(void)
|
|
|
GlobalPowerManger *tmp;
|
|
GlobalPowerManger *tmp;
|
|
|
GlobalDeviceManager *dm=get_dm();
|
|
GlobalDeviceManager *dm=get_dm();
|
|
|
|
|
|
|
|
- if(list_empty(&dm->_globalPowerManger.list)) {
|
|
|
|
|
|
|
+ if(!thread_is_running(THREAD_ID_POWER) || list_empty(&dm->_globalPowerManger.list)) {
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
|
|
list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
|
|
@@ -266,43 +266,16 @@ static void menu_output_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
{
|
|
{
|
|
|
int r;
|
|
int r;
|
|
|
char tmp[100];
|
|
char tmp[100];
|
|
|
- PowerInfo *pwr,info;
|
|
|
|
|
|
|
+ PowerInfo *pwr,info={0};
|
|
|
GlobalDeviceManager *dm=get_dm();
|
|
GlobalDeviceManager *dm=get_dm();
|
|
|
|
|
|
|
|
|
|
+ pwr = &info;
|
|
|
r = get_output(dm, h->ch_out, h->ph_out, &info);
|
|
r = get_output(dm, h->ch_out, h->ph_out, &info);
|
|
|
if(r==0) {
|
|
if(r==0) {
|
|
|
- pwr = &info;
|
|
|
|
|
h->ch_out = (h->ch_out+1)%h->ch_max;
|
|
h->ch_out = (h->ch_out+1)%h->ch_max;
|
|
|
if(is_ph3_out(dm)) {
|
|
if(is_ph3_out(dm)) {
|
|
|
h->ph_out = (h->ph_out+1)%3;
|
|
h->ph_out = (h->ph_out+1)%3;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- 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 {
|
|
else {
|
|
|
h->ch_out = 0;
|
|
h->ch_out = 0;
|
|
@@ -310,6 +283,38 @@ static void menu_output_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
h->menu.menu_id++;
|
|
h->menu.menu_id++;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ lcd_fill(0);
|
|
|
|
|
+ if(h->ch_max>0) {
|
|
|
|
|
+ sprintf(tmp, "%s CH%d", lang_get_str(h->lang, STR_ID_OUTPUT), h->ch_out+1);
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ sprintf(tmp, "%s", 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();
|
|
|
}
|
|
}
|
|
|
static void menu_sensor_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
static void menu_sensor_paint(menu_handle_t *h, int font1, int font2, int item_h)
|
|
|
{
|
|
{
|
|
@@ -419,8 +424,11 @@ static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv
|
|
|
tmr_start(h, 500);
|
|
tmr_start(h, 500);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ else if(h->menu.menu_lv==2) {
|
|
|
|
|
+ h->menu.menu_lv = 1;
|
|
|
|
|
+ }
|
|
|
else {
|
|
else {
|
|
|
- if(kv->type==TYPE_SHORT) {
|
|
|
|
|
|
|
+ if(kv->type==TYPE_LONG) {
|
|
|
h->menu.menu_lv = 1;
|
|
h->menu.menu_lv = 1;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -525,17 +533,19 @@ int menu_init(void)
|
|
|
{
|
|
{
|
|
|
int i;
|
|
int i;
|
|
|
menu_handle_t *h=&mnHandle;
|
|
menu_handle_t *h=&mnHandle;
|
|
|
|
|
+ MiscInfo_t *misc=&get_dm()->_globalDevInfo.misc;
|
|
|
|
|
|
|
|
memset(h, 0, sizeof(menu_handle_t));
|
|
memset(h, 0, sizeof(menu_handle_t));
|
|
|
h->lang = lang_id;
|
|
h->lang = lang_id;
|
|
|
h->tmr = timer_init();
|
|
h->tmr = timer_init();
|
|
|
h->ms = get_ms();
|
|
h->ms = get_ms();
|
|
|
h->uflag = 1;
|
|
h->uflag = 1;
|
|
|
- h->fliptime = get_dm()->_globalDevInfo.misc.flip_time*1000;
|
|
|
|
|
|
|
+ h->fliptime = misc->flip_time*1000;
|
|
|
|
|
|
|
|
h->ph_in = 0;
|
|
h->ph_in = 0;
|
|
|
h->ph_out = 0;
|
|
h->ph_out = 0;
|
|
|
h->ch_out = 0;
|
|
h->ch_out = 0;
|
|
|
|
|
+ h->ch_max = 0;
|
|
|
h->menu.menu_id = 0;
|
|
h->menu.menu_id = 0;
|
|
|
h->menu.menu_lv = 0;
|
|
h->menu.menu_lv = 0;
|
|
|
for(i=0; i<MENU_MAX; i++) {
|
|
for(i=0; i<MENU_MAX; i++) {
|
|
@@ -547,6 +557,8 @@ int menu_init(void)
|
|
|
led_init();
|
|
led_init();
|
|
|
beep_init();
|
|
beep_init();
|
|
|
lcd_init(LCD_WIDTH,LCD_HEIGHT,LCD_COLOR);
|
|
lcd_init(LCD_WIDTH,LCD_HEIGHT,LCD_COLOR);
|
|
|
|
|
+ lcd_rotate(misc->rotate);
|
|
|
|
|
+ printf("_________________misc.rotate: %d\n", misc->rotate);
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -580,19 +592,14 @@ int menu_handle(void)
|
|
|
{
|
|
{
|
|
|
if(kv.type==TYPE_SHORT) {
|
|
if(kv.type==TYPE_SHORT) {
|
|
|
if(h->menu.menu_lv==0) {
|
|
if(h->menu.menu_lv==0) {
|
|
|
- if(lcd_get_angle()==ANGLE_0) {
|
|
|
|
|
- //lcd_rotate(ANGLE_180);
|
|
|
|
|
|
|
+ #if 0
|
|
|
|
|
+ if(lcd_get_rotate()==0) {
|
|
|
|
|
+ lcd_rotate(180);
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- //lcd_rotate(ANGLE_0);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if(h->menu.menu_lv==0) {
|
|
|
|
|
- if(h->menu.menu_id==MENU_MODBUS) {
|
|
|
|
|
- h->menu.menu_lv = 1;
|
|
|
|
|
|
|
+ lcd_rotate(0);
|
|
|
}
|
|
}
|
|
|
|
|
+ #endif
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
h->uflag = UFLAG_KEY;
|
|
h->uflag = UFLAG_KEY;
|
|
@@ -632,16 +639,15 @@ int menu_handle(void)
|
|
|
|
|
|
|
|
default:
|
|
default:
|
|
|
{
|
|
{
|
|
|
-#if 0
|
|
|
|
|
|
|
+#if 1
|
|
|
if(h->fliptime>0) {
|
|
if(h->fliptime>0) {
|
|
|
if(h->menu.menu_lv==0) {
|
|
if(h->menu.menu_lv==0) {
|
|
|
if((get_ms()-h->ms)>=h->fliptime) {
|
|
if((get_ms()-h->ms)>=h->fliptime) {
|
|
|
if(h->menu.menu_id<MENU_MAX-1) {
|
|
if(h->menu.menu_id<MENU_MAX-1) {
|
|
|
- if() {
|
|
|
|
|
h->menu.menu_id++;
|
|
h->menu.menu_id++;
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- h->menu.menu_id = 0;
|
|
|
|
|
|
|
+ h->menu.menu_id = MENU_SYSTEM;
|
|
|
}
|
|
}
|
|
|
h->uflag = UFLAG_FLIP;
|
|
h->uflag = UFLAG_FLIP;
|
|
|
h->ms = get_ms();
|
|
h->ms = get_ms();
|
|
@@ -658,6 +664,10 @@ int menu_handle(void)
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if(h->ch_max==0) {
|
|
|
|
|
+ h->ch_max = get_ch_max();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
switch(h->menu.menu_id) {
|
|
switch(h->menu.menu_id) {
|
|
|
case MENU_SYSTEM:
|
|
case MENU_SYSTEM:
|
|
|
{
|
|
{
|
|
@@ -667,21 +677,18 @@ int menu_handle(void)
|
|
|
|
|
|
|
|
case MENU_INPUT:
|
|
case MENU_INPUT:
|
|
|
{
|
|
{
|
|
|
- h->menu.menu_id++;
|
|
|
|
|
menu_input_paint(h, font1, font2, item_h);
|
|
menu_input_paint(h, font1, font2, item_h);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case MENU_OUTPUT:
|
|
case MENU_OUTPUT:
|
|
|
{
|
|
{
|
|
|
- h->menu.menu_id++;
|
|
|
|
|
menu_output_paint(h, font1, font2, item_h);
|
|
menu_output_paint(h, font1, font2, item_h);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case MENU_SENSOR:
|
|
case MENU_SENSOR:
|
|
|
{
|
|
{
|
|
|
- h->menu.menu_id++;
|
|
|
|
|
menu_sensor_paint(h, font1, font2, item_h);
|
|
menu_sensor_paint(h, font1, font2, item_h);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|