gui/motorcontrol.cpp: cleanup/rework, add simple network info

This commit is contained in:
[CST] Focus
2013-07-23 15:36:33 +04:00
parent 5c3708e871
commit 3c074a9582
2 changed files with 281 additions and 389 deletions

View File

@@ -46,15 +46,7 @@
#include <zapit/satconfig.h>
#include <zapit/zapit.h>
static int g_sig;
static int g_snr;
static int last_snr = 0;
static int moving = 0;
#define RED_BAR 40
#define YELLOW_BAR 70
#define GREEN_BAR 100
#include <zapit/scannit.h>
#define BAR_BORDER 2
#define BAR_WIDTH 100
@@ -88,7 +80,7 @@ void CMotorControl::Init(void)
width = w_max(470, 0);
mheight = mheight - 2;
height = hheight + (20 * mheight) - 5;
height = hheight + (22 * mheight) - 5;
height = h_max(height, 0);
x = frameBuffer->getScreenX() + (frameBuffer->getScreenWidth() - width) / 2;
@@ -114,21 +106,11 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &)
int wasgrow = 0;
uint8_t origPosition;
last_snr = 0;
moving = 0;
last_snr = moving = g_sig = g_snr = 0;
network = "unknown";
CZapitClient::ScanSatelliteList satList;
CZapitClient::commandSetScanSatelliteList sat;
sat_iterator_t sit;
sigscale->reset();
snrscale->reset();
lastsnr = lastsig = -1;
bool istheend = false;
int lim_cmd;
if (!frameBuffer->getActive())
return menu_return::RETURN_EXIT_ALL;
int retval = menu_return::RETURN_REPAINT;
if (parent)
parent->hide();
@@ -136,26 +118,16 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &)
x = frameBuffer->getScreenX() + (frameBuffer->getScreenWidth() - width) / 2;
y = frameBuffer->getScreenY() + (frameBuffer->getScreenHeight() - height) / 2;
#if 0
/* send satellite list to zapit */
for(sit = satellitePositions.begin(); sit != satellitePositions.end(); sit++) {
if(!strcmp(sit->second.name.c_str(),scansettings.satName)) {
sat.position = sit->first;
strncpy(sat.satName, scansettings.satName, 49);
satList.push_back(sat);
if(sit->second.motor_position)
motorPosition = sit->second.motor_position;
break;
}
}
#endif
/* send satellite list to zapit */
CZapitClient::ScanSatelliteList satList;
CZapitClient::commandSetScanSatelliteList sat;
sat.position = CServiceManager::getInstance()->GetSatellitePosition(scansettings.satName);
strncpy(sat.satName, scansettings.satName, 49);
satList.push_back(sat);
satellite_map_t & satmap = frontend->getSatellites();
sit = satmap.find(sat.position);
sat_iterator_t sit = satmap.find(sat.position);
if(sit != satmap.end() && sit->second.motor_position)
motorPosition = sit->second.motor_position;
@@ -176,14 +148,10 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &)
paintMenu();
paintStatus();
while (!istheend)
{
uint64_t timeoutEnd = CRCInput::calcTimeoutEnd_MS(100 /*250*/);
msg = CRCInput::RC_nokey;
while (!(msg == CRCInput::RC_timeout) && (!(msg == CRCInput::RC_home)))
while (!(msg == CRCInput::RC_setup) && (!(msg == CRCInput::RC_home)))
{
uint64_t timeoutEnd = CRCInput::calcTimeoutEnd_MS(100 /*250*/);
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd);
showSNR();
//printf("SIG: %d SNR %d last %d\n", g_sig, g_snr, last_snr);
@@ -204,155 +172,48 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &)
} else
wasgrow = 0;
if (msg == CRCInput::RC_ok || msg == CRCInput::RC_0) {
printf("[motorcontrol] 0 key received... goto %s\n", installerMenue ? "userMenue" : "installerMenue");
if (installerMenue)
{
switch(msg)
{
case CRCInput::RC_ok:
case CRCInput::RC_0:
printf("[motorcontrol] 0 key received... goto userMenue\n");
installerMenue = false;
else
installerMenue = true;
paintMenu();
paintStatus();
break;
case CRCInput::RC_1:
case CRCInput::RC_right:
}
else if (msg == CRCInput::RC_1 || msg == CRCInput::RC_left) {
printf("[motorcontrol] left/1 key received... drive/Step motor west, stepMode: %d\n", stepMode);
motorStepWest();
motorStep(true);
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_red:
case CRCInput::RC_2:
}
else if (msg == CRCInput::RC_red || msg == CRCInput::RC_2) {
printf("[motorcontrol] 2 key received... halt motor\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0);
moving = 0;
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_3:
case CRCInput::RC_left:
}
else if (msg == CRCInput::RC_3 || msg == CRCInput::RC_right) {
printf("[motorcontrol] right/3 key received... drive/Step motor east, stepMode: %d\n", stepMode);
motorStepEast();
motorStep(false);
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_4:
}
else if (msg == CRCInput::RC_4) {
if (installerMenue) {
printf("[motorcontrol] 4 key received... set west (soft) limit\n");
if(g_settings.rotor_swap) lim_cmd = 0x66;
else lim_cmd = 0x67;
g_Zapit->sendMotorCommand(0xE1, 0x31, lim_cmd, 0, 0, 0);
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_5:
}
}
else if (msg == CRCInput::RC_5 || msg == CRCInput::RC_green) {
if (installerMenue) {
printf("[motorcontrol] 5 key received... disable (soft) limits\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x63, 0, 0, 0);
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_6:
printf("[motorcontrol] 6 key received... set east (soft) limit\n");
if(g_settings.rotor_swap) lim_cmd = 0x67;
else lim_cmd = 0x66;
g_Zapit->sendMotorCommand(0xE1, 0x31, lim_cmd, 0, 0, 0);
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_7:
printf("[motorcontrol] 7 key received... goto reference position\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6B, 1, 0, 0);
satellitePosition = 0;
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_8:
printf("[motorcontrol] 8 key received... enable (soft) limits\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6A, 1, 0, 0);
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_9:
printf("[motorcontrol] 9 key received... (re)-calculate positions\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6F, 1, 0, 0);
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_plus:
case CRCInput::RC_up:
printf("[motorcontrol] up key received... increase satellite position: %d\n", ++motorPosition);
satellitePosition = 0;
paintStatus();
break;
case CRCInput::RC_minus:
case CRCInput::RC_down:
if (motorPosition > 1) motorPosition--;
printf("[motorcontrol] down key received... decrease satellite position: %d\n", motorPosition);
satellitePosition = 0;
paintStatus();
break;
case CRCInput::RC_blue:
if (++stepMode > 3)
stepMode = 0;
if (stepMode == STEP_MODE_OFF)
satellitePosition = 0;
last_snr = 0;
printf("[motorcontrol] red key received... toggle stepmode on/off: %d\n", stepMode);
paintStatus();
break;
default:
//printf("[motorcontrol] message received...\n");
if ((msg >= CRCInput::RC_WithData) && (msg < CRCInput::RC_WithData + 0x10000000))
delete[] (unsigned char*) data;
break;
}
}
else
{
switch(msg)
{
case CRCInput::RC_ok:
case CRCInput::RC_0:
printf("[motorcontrol] 0 key received... goto installerMenue\n");
installerMenue = true;
paintMenu();
paintStatus();
break;
case CRCInput::RC_1:
case CRCInput::RC_right:
printf("[motorcontrol] left/1 key received... drive/Step motor west, stepMode: %d\n", stepMode);
motorStepWest();
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_red:
case CRCInput::RC_2:
printf("[motorcontrol] 2 key received... halt motor\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0);
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_3:
case CRCInput::RC_left:
printf("[motorcontrol] right/3 key received... drive/Step motor east, stepMode: %d\n", stepMode);
motorStepEast();
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_green:
case CRCInput::RC_5:
{
} else {
bool store = true;
printf("[motorcontrol] 5 key received... store present satellite number: %d\n", motorPosition);
if(motorPosition != origPosition) {
@@ -373,92 +234,114 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &)
}
if(store)
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6A, 1, motorPosition, 0);
//g_Zapit->tune_TP(TP);
}
break;
case CRCInput::RC_6:
}
else if (msg == CRCInput::RC_6) {
if (installerMenue) {
printf("[motorcontrol] 6 key received... set east (soft) limit\n");
if(g_settings.rotor_swap) lim_cmd = 0x67;
else lim_cmd = 0x66;
g_Zapit->sendMotorCommand(0xE1, 0x31, lim_cmd, 0, 0, 0);
//g_Zapit->tune_TP(TP);
} else {
if (stepSize < 0x7F) stepSize++;
printf("[motorcontrol] 6 key received... increase Step size: %d\n", stepSize);
paintStatus();
break;
case CRCInput::RC_yellow:
case CRCInput::RC_7:
}
}
else if (msg == CRCInput::RC_7) {
if (installerMenue) {
printf("[motorcontrol] 7 key received... goto reference position\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6B, 1, 0, 0);
satellitePosition = 0;
paintStatus();
} else {
printf("[motorcontrol] 7 key received... goto satellite number: %d\n", motorPosition);
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6B, 1, motorPosition, 0);
satellitePosition = 0;
paintStatus();
}
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_9:
}
else if (msg == CRCInput::RC_8) {
if (installerMenue) {
printf("[motorcontrol] 8 key received... enable (soft) limits\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6A, 1, 0, 0);
}
}
else if (msg == CRCInput::RC_9) {
if (installerMenue) {
printf("[motorcontrol] 9 key received... (re)-calculate positions\n");
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6F, 1, 0, 0);
} else {
if (stepSize > 1) stepSize--;
printf("[motorcontrol] 9 key received... decrease Step size: %d\n", stepSize);
paintStatus();
break;
case CRCInput::RC_plus:
case CRCInput::RC_up:
}
}
else if (msg == CRCInput::RC_plus || msg == CRCInput::RC_up) {
printf("[motorcontrol] up key received... increase satellite position: %d\n", ++motorPosition);
satellitePosition = 0;
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_minus:
case CRCInput::RC_down:
}
else if (msg == CRCInput::RC_minus || msg == CRCInput::RC_down) {
if (motorPosition > 1) motorPosition--;
printf("[motorcontrol] down key received... decrease satellite position: %d\n", motorPosition);
satellitePosition = 0;
paintStatus();
//g_Zapit->tune_TP(TP);
break;
case CRCInput::RC_blue:
if (++stepMode > 2)
}
else if (msg == CRCInput::RC_blue) {
if (++stepMode > 3)
stepMode = 0;
if (stepMode == STEP_MODE_OFF)
satellitePosition = 0;
printf("[motorcontrol] red key received... toggle stepmode on/off: %d\n", stepMode);
last_snr = 0;
printf("[motorcontrol] blue key received... toggle stepmode on/off: %d\n", stepMode);
paintStatus();
break;
default:
//printf("[motorcontrol] message received...\n");
}
else if (msg == CRCInput::RC_info) {
network = "waiting for NIT...";
paintStatus();
readNetwork();
paintStatus();
}
else if (msg == CRCInput::RC_setup) {
retval = menu_return::RETURN_EXIT_ALL;
}
else {
if ((msg >= CRCInput::RC_WithData) && (msg < CRCInput::RC_WithData + 0x10000000))
delete[] (unsigned char*) data;
break;
}
}
}
istheend = (msg == CRCInput::RC_home);
}
hide();
frontend->setTsidOnid(0);
return menu_return::RETURN_REPAINT;
return retval;
}
void CMotorControl::motorStepWest(void)
void CMotorControl::motorStep(bool west)
{
int cmd;
printf("[motorcontrol] motorStepWest\n");
if (west) {
if(g_settings.rotor_swap) cmd = 0x68;
else cmd = 0x69;
} else {
if(g_settings.rotor_swap) cmd = 0x69;
else cmd = 0x68;
}
printf("[motorcontrol] motorStep: %s\n", west ? "West" : "East");
switch(stepMode)
{
case STEP_MODE_ON:
g_Zapit->sendMotorCommand(0xE0, 0x31, cmd, 1, (-1 * stepSize), 0);
satellitePosition += stepSize;
satellitePosition += west ? stepSize : -stepSize;
break;
case STEP_MODE_TIMED:
g_Zapit->sendMotorCommand(0xE0, 0x31, cmd, 1, 40, 0);
usleep(stepSize * stepDelay * 1000);
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); //halt motor
satellitePosition += stepSize;
satellitePosition += west ? stepSize : -stepSize;
break;
case STEP_MODE_AUTO:
moving = 1;
@@ -468,31 +351,6 @@ void CMotorControl::motorStepWest(void)
}
}
void CMotorControl::motorStepEast(void)
{
int cmd;
if(g_settings.rotor_swap) cmd = 0x69;
else cmd = 0x68;
printf("[motorcontrol] motorStepEast\n");
switch(stepMode)
{
case STEP_MODE_ON:
g_Zapit->sendMotorCommand(0xE0, 0x31, cmd, 1, (-1 * stepSize), 0);
satellitePosition -= stepSize;
break;
case STEP_MODE_TIMED:
g_Zapit->sendMotorCommand(0xE0, 0x31, cmd, 1, 40, 0);
usleep(stepSize * stepDelay * 1000);
g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); //halt motor
satellitePosition -= stepSize;
break;
case STEP_MODE_AUTO:
moving = 1;
default:
g_Zapit->sendMotorCommand(0xE0, 0x31, cmd, 1, 40, 0);
}
}
void CMotorControl::hide()
{
frameBuffer->paintBackgroundBoxRel(x, y, width, height + 20);
@@ -501,21 +359,25 @@ void CMotorControl::hide()
void CMotorControl::paintLine(int px, int *py, int pwidth, const char *txt)
{
frameBuffer->paintBoxRel(px, *py, pwidth, mheight, COL_MENUCONTENT_PLUS_0);
*py += mheight;
frameBuffer->paintBoxRel(px, *py - mheight, pwidth, mheight, COL_MENUCONTENT_PLUS_0);
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(px, *py, pwidth, txt, COL_MENUCONTENT_TEXT, 0, true);
}
void CMotorControl::paintLine(int px, int py, int pwidth, const char *txt)
{
//frameBuffer->paintBoxRel(px, py - mheight, pwidth, mheight, COL_MENUCONTENT_PLUS_0);
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(px, py, pwidth, txt, COL_MENUCONTENT_TEXT, 0, true);
}
void CMotorControl::paintLine(int ix, int tx, int *py, int pwidth, const char *icon, const char *txt)
{
frameBuffer->paintIcon(icon, ix, *py, mheight);
*py += mheight;
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(tx, *py, pwidth, txt, COL_MENUCONTENT_TEXT, 0, true);
}
void CMotorControl::paintSeparator(int xpos, int *pypos, int pwidth, const char * /*txt*/)
{
//int stringwidth = 0;
//int stringstartposX = 0;
int th = 10;
//*ypos += mheight;
*pypos += th;
@@ -523,8 +385,8 @@ void CMotorControl::paintSeparator(int xpos, int *pypos, int pwidth, const char
frameBuffer->paintHLineRel(xpos, pwidth - 20, *pypos - (th >> 1) + 1, COL_MENUCONTENT_PLUS_1);
#if 0
stringwidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(txt);
stringstartposX = 0;
int stringwidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(txt);
int stringstartposX = 0;
stringstartposX = (xpos + (pwidth >> 1)) - (stringwidth >> 1);
frameBuffer->paintBoxRel(stringstartposX - 5, *pypos - mheight, stringwidth + 10, mheight, COL_MENUCONTENT_PLUS_0);
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(stringstartposX, *pypos, stringwidth, txt, COL_MENUCONTENT_TEXT);
@@ -533,7 +395,7 @@ void CMotorControl::paintSeparator(int xpos, int *pypos, int pwidth, const char
void CMotorControl::paintStatus()
{
char buf[256];
char buf1[256];
char buf2[256];
int xpos1 = x + 10;
@@ -545,54 +407,45 @@ void CMotorControl::paintStatus()
paintSeparator(xpos1, &ypos, width, g_Locale->getText(LOCALE_MOTORCONTROL_SETTINGS));
paintLine(xpos1, &ypos, width1, g_Locale->getText(LOCALE_MOTORCONTROL_MOTOR_POS));
sprintf(buf, "%d", motorPosition);
paintLine(xpos2, ypos, width2 , buf);
sprintf(buf1, "%d", motorPosition);
paintLine(xpos2, ypos, width2 , buf1);
paintLine(xpos1, &ypos, width1, g_Locale->getText(LOCALE_MOTORCONTROL_MOVEMENT));
switch(stepMode)
{
case STEP_MODE_ON:
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_MODE));
break;
case STEP_MODE_OFF:
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_DRIVE_MODE));
strcpy(buf1, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_MODE));
sprintf(buf2, "%d", stepSize);
break;
case STEP_MODE_AUTO:
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_DRIVE_MODE_AUTO));
strcpy(buf1, g_Locale->getText(LOCALE_MOTORCONTROL_DRIVE_MODE_AUTO));
if(moving)
strcpy(buf2, g_Locale->getText(LOCALE_MOTORCONTROL_STOP_MOVING));
else
strcpy(buf2, g_Locale->getText(LOCALE_MOTORCONTROL_STOP_STOPPED));
break;
case STEP_MODE_OFF:
strcpy(buf1, g_Locale->getText(LOCALE_MOTORCONTROL_DRIVE_MODE));
strcpy(buf2, g_Locale->getText(LOCALE_MOTORCONTROL_NO_MODE));
break;
case STEP_MODE_TIMED:
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_TIMED_MODE));
strcpy(buf1, g_Locale->getText(LOCALE_MOTORCONTROL_TIMED_MODE));
sprintf(buf2, "%d %s", stepSize * stepDelay, g_Locale->getText(LOCALE_MOTORCONTROL_MSEC));
break;
}
paintLine(xpos2, ypos, width2, buf);
paintLine(xpos2, ypos, width2, buf1);
paintLine(xpos1, &ypos, width1, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_SIZE));
switch(stepMode)
{
case STEP_MODE_ON:
sprintf(buf, "%d", stepSize);
break;
case STEP_MODE_AUTO:
if(moving)
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_STOP_MOVING));
else
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_STOP_STOPPED));
break;
case STEP_MODE_OFF:
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_NO_MODE));
break;
case STEP_MODE_TIMED:
sprintf(buf, "%d ", stepSize * stepDelay);
strcat(buf, g_Locale->getText(LOCALE_MOTORCONTROL_MSEC));
break;
}
paintLine(xpos2, ypos, width2, buf);
paintLine(xpos2, ypos, width2, buf2);
paintLine(xpos1, &ypos, width1, g_Locale->getText(LOCALE_MOTORCONTROL_NETWORK));
paintLine(xpos2, ypos, width2, network.c_str());
paintSeparator(xpos1, &ypos, width, g_Locale->getText(LOCALE_MOTORCONTROL_STATUS));
strcpy(buf, g_Locale->getText(LOCALE_MOTORCONTROL_SAT_POS));
sprintf(buf2, "%d", satellitePosition);
strcat(buf, buf2);
paintLine(xpos1, &ypos, width1, buf);
sprintf(buf1, "%s %d", g_Locale->getText(LOCALE_MOTORCONTROL_SAT_POS), satellitePosition);
paintLine(xpos1, &ypos, width1, buf1);
paintSeparator(xpos1, &ypos, width, g_Locale->getText(LOCALE_MOTORCONTROL_SETTINGS));
}
@@ -604,6 +457,10 @@ void CMotorControl::paintHead()
void CMotorControl::paintMenu()
{
sigscale->reset();
snrscale->reset();
lastsnr = lastsig = -1;
frameBuffer->paintBoxRel(x, y + hheight, width, height - hheight, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM);
ypos = y + hheight + (mheight >> 1) - 10;
@@ -611,8 +468,9 @@ void CMotorControl::paintMenu()
int xpos1 = x + 10;
int xpos2 = xpos1 + 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth("(7/yellow)");
int width2 = width - (xpos2 - xpos1) - 10;
int width1 = width - 10;
#if 1
int width1 = width - 10;
paintLine(xpos1, &ypos, width1, "(0/OK)");
if(installerMenue)
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_USER_MENU));
@@ -630,22 +488,16 @@ void CMotorControl::paintMenu()
{
paintLine(xpos1, &ypos, width1, "(4)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_WEST_LIMIT));
paintLine(xpos1, &ypos, width1, "(5)");
paintLine(xpos1, &ypos, width1, "(5/green)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_DISABLE_LIMIT));
paintLine(xpos1, &ypos, width1, "(6)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_EAST_LIMIT));
paintLine(xpos1, &ypos, width1, "(7)");
paintLine(xpos1, &ypos, width1, "(7/yellow)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_REF_POSITION));
paintLine(xpos1, &ypos, width1, "(8)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_ENABLE_LIMIT));
paintLine(xpos1, &ypos, width1, "(9)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_CALC_POSITIONS));
paintLine(xpos1, &ypos, width1, "(+/up)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_POS_INCREASE));
paintLine(xpos1, &ypos, width1, "(-/down)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_POS_DECREASE));
paintLine(xpos1, &ypos, width1, "(blue)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_DRIVE));
}
else
{
@@ -661,14 +513,41 @@ void CMotorControl::paintMenu()
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_NOTDEF));
paintLine(xpos1, &ypos, width1, "(9)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_DECREASE));
}
paintLine(xpos1, &ypos, width1, "(+/up)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_POS_INCREASE));
paintLine(xpos1, &ypos, width1, "(-/down)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_POS_DECREASE));
paintLine(xpos1, &ypos, width1, "(blue)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_DRIVE));
}
paintLine(xpos1, &ypos, width1, "(info)");
paintLine(xpos2, ypos, width2, g_Locale->getText(LOCALE_MOTORCONTROL_NETWORK));
#else
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_0,
installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_USER_MENU) : g_Locale->getText(LOCALE_MOTORCONTROL_INSTALL_MENU));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_1, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_WEST));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_2, g_Locale->getText(LOCALE_MOTORCONTROL_HALT));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_3, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_EAST));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_4,
installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_WEST_LIMIT) : g_Locale->getText(LOCALE_MOTORCONTROL_NOTDEF));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_5,
installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_DISABLE_LIMIT) : g_Locale->getText(LOCALE_MOTORCONTROL_STORE));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_6,
installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_EAST_LIMIT) : g_Locale->getText(LOCALE_MOTORCONTROL_STEP_INCREASE));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_7,
installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_REF_POSITION) : g_Locale->getText(LOCALE_MOTORCONTROL_GOTO));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_8,
installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_ENABLE_LIMIT) : g_Locale->getText(LOCALE_MOTORCONTROL_NOTDEF));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_9,
installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_CALC_POSITIONS) : g_Locale->getText(LOCALE_MOTORCONTROL_STEP_DECREASE));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_TOP, g_Locale->getText(LOCALE_MOTORCONTROL_POS_INCREASE));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_DOWN, g_Locale->getText(LOCALE_MOTORCONTROL_POS_DECREASE));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_BLUE, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_DRIVE));
paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_INFO_SMALL, g_Locale->getText(LOCALE_MOTORCONTROL_NETWORK));
#endif
ypos_status = ypos;
}
@@ -696,24 +575,19 @@ void CMotorControl::startSatFind(void)
void CMotorControl::stopSatFind(void)
{
#if 0
if (satfindpid != -1) {
printf("[motorcontrol] killing satfind...\n");
kill(satfindpid, SIGKILL);
waitpid(satfindpid, 0, 0);
satfindpid = -1;
}
#endif
}
#define BARWT 10
#define BAR_BL 2
#define BARW (BARWT - BAR_BL)
#define BARWW (BARWT - BARW)
void CMotorControl::showSNR()
{
char percent[10];
//char ber[20];
int barwidth = 100;
uint16_t ssig, ssnr;
int sig, snr;
@@ -761,3 +635,18 @@ void CMotorControl::showSNR()
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString (posx_snr+2, posy + mheight, sw, percent, COL_MENUCONTENT_TEXT);
}
}
void CMotorControl::readNetwork()
{
CNit nit(0, 0, 0);
nit.Start();
nit.Stop();
network = nit.GetNetworkName();
t_satellite_position pos = nit.getOrbitalPosition();
if (network.empty())
network = "unknown";
char net[100];
snprintf(net, sizeof(net), "%03d.%d, %s", abs(pos)/10, abs(pos)%10, network.c_str());
network = net;
}

View File

@@ -67,18 +67,21 @@ class CMotorControl : public CMenuTarget
int32_t satellitePosition;
int satfindpid;
int lastsnr, lastsig;
int g_sig, g_snr, last_snr, moving;
std::string network;
CProgressBar *snrscale, *sigscale;
void paintHead(void);
void paintMenu(void);
void paintStatus(void);
void paintLine(int x, int *y, int width, const char *txt);
void paintLine(int x, int y, int width, const char *txt);
void paintLine(int ix, int tx, int *y, int pwidth, const char *icon, const char *txt);
void paintSeparator(int xpos, int * ypos, int width, const char *txt);
void motorStepEast(void);
void motorStepWest(void);
void motorStep(bool west);
void startSatFind(void);
void stopSatFind(void);
void showSNR(void);
void readNetwork(void);
public: