Skip to content

Commit

Permalink
Migrate DeepskyDad FR1 driver
Browse files Browse the repository at this point in the history
  • Loading branch information
naheedsa committed Apr 22, 2024
1 parent 730f652 commit 088acee
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 54 deletions.
96 changes: 48 additions & 48 deletions drivers/rotator/deepskydad_fr1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,22 +58,22 @@ bool DeepSkyDadFR1::initProperties()
addAuxControls();

// Speed mode
IUFillSwitch(&SpeedModeS[Slow], "SLOW", "Slow", ISS_OFF);
IUFillSwitch(&SpeedModeS[Fast], "FAST", "Fast", ISS_OFF);
IUFillSwitchVector(&SpeedModeSP, SpeedModeS, 2, getDeviceName(), "Speed mode", "Speed mode", MAIN_CONTROL_TAB, IP_RW,
SpeedModeSP[Slow].fill("SLOW", "Slow", ISS_OFF);
SpeedModeSP[Fast].fill( "FAST", "Fast", ISS_OFF);
SpeedModeSP.fill(getDeviceName(), "Speed mode", "Speed mode", MAIN_CONTROL_TAB, IP_RW,
ISR_1OFMANY, 0, IPS_IDLE);

// Step mode
IUFillSwitch(&StepSizeS[One], "1", "1", ISS_OFF);
IUFillSwitch(&StepSizeS[Two], "2", "1/2", ISS_OFF);
IUFillSwitch(&StepSizeS[Four], "4", "1/4", ISS_OFF);
IUFillSwitch(&StepSizeS[Eight], "8", "1/8", ISS_OFF);
IUFillSwitchVector(&StepSizeSP, StepSizeS, 4, getDeviceName(), "Step mode", "Step mode", MAIN_CONTROL_TAB, IP_RW,
StepSizeSP[One].fill("1", "1", ISS_OFF);
StepSizeSP[Two].fill("2", "1/2", ISS_OFF);
StepSizeSP[Four].fill( "4", "1/4", ISS_OFF);
StepSizeSP[Eight].fill( "8", "1/8", ISS_OFF);
StepSizeSP.fill(getDeviceName(), "Step mode", "Step mode", MAIN_CONTROL_TAB, IP_RW,
ISR_1OFMANY, 0, IPS_IDLE);

// Firmware version
IUFillText(&FirmwareT[0], "Version", "Version", nullptr);
IUFillTextVector(&FirmwareTP, FirmwareT, 1, getDeviceName(), "Firmware", "Firmware", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE);
FirmwareTP[0].fill("Version", "Version", nullptr);
FirmwareTP.fill(getDeviceName(), "Firmware", "Firmware", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE);

serialConnection->setDefaultPort("/dev/ttyACM0");
serialConnection->registerHandshake([&]()
Expand All @@ -90,15 +90,15 @@ bool DeepSkyDadFR1::updateProperties()

if (isConnected())
{
defineProperty(&SpeedModeSP);
defineProperty(&StepSizeSP);
defineProperty(&FirmwareTP);
defineProperty(SpeedModeSP);
defineProperty(StepSizeSP);
defineProperty(FirmwareTP);
}
else
{
deleteProperty(SpeedModeSP.name);
deleteProperty(StepSizeSP.name);
deleteProperty(FirmwareTP.name);
deleteProperty(SpeedModeSP);
deleteProperty(StepSizeSP);
deleteProperty(FirmwareTP);
}

return true;
Expand All @@ -119,18 +119,18 @@ bool DeepSkyDadFR1::ISNewSwitch(const char * dev, const char * name, ISState * s
{
if (dev != nullptr && strcmp(dev, getDeviceName()) == 0)
{
if (strcmp(SpeedModeSP.name, name) == 0)
if (SpeedModeSP.isNameMatch(name))
{
int current_mode = IUFindOnSwitchIndex(&SpeedModeSP);
int current_mode = SpeedModeSP.findOnSwitchIndex();

IUUpdateSwitch(&SpeedModeSP, states, names, n);
SpeedModeSP.update(states, names, n);

int target_mode = IUFindOnSwitchIndex(&SpeedModeSP);
int target_mode = SpeedModeSP.findOnSwitchIndex();

if (current_mode == target_mode)
{
SpeedModeSP.s = IPS_OK;
IDSetSwitch(&SpeedModeSP, nullptr);
SpeedModeSP.setState(IPS_OK);
SpeedModeSP.apply();
return true;
}

Expand All @@ -141,29 +141,29 @@ bool DeepSkyDadFR1::ISNewSwitch(const char * dev, const char * name, ISState * s
bool rc = sendCommand(cmd, response);
if (!rc)
{
IUResetSwitch(&SpeedModeSP);
SpeedModeS[current_mode].s = ISS_ON;
SpeedModeSP.s = IPS_ALERT;
IDSetSwitch(&SpeedModeSP, nullptr);
SpeedModeSP.reset();
SpeedModeSP[current_mode].setState(ISS_ON);
SpeedModeSP.setState(IPS_ALERT);
SpeedModeSP.apply();
return false;
}

SpeedModeSP.s = IPS_OK;
IDSetSwitch(&SpeedModeSP, nullptr);
SpeedModeSP.setState(IPS_OK);
SpeedModeSP.apply();
return true;
}
else if (strcmp(StepSizeSP.name, name) == 0)
else if (StepSizeSP.isNameMatch(name))
{
int current_mode = IUFindOnSwitchIndex(&StepSizeSP);
int current_mode = StepSizeSP.findOnSwitchIndex();

IUUpdateSwitch(&StepSizeSP, states, names, n);
StepSizeSP.update(states, names, n);

int target_mode = IUFindOnSwitchIndex(&StepSizeSP);
int target_mode = StepSizeSP.findOnSwitchIndex();

if (current_mode == target_mode)
{
StepSizeSP.s = IPS_OK;
IDSetSwitch(&StepSizeSP, nullptr);
StepSizeSP.setState(IPS_OK);
StepSizeSP.apply();
return true;
}

Expand All @@ -174,15 +174,15 @@ bool DeepSkyDadFR1::ISNewSwitch(const char * dev, const char * name, ISState * s
bool rc = sendCommand(cmd, response);
if (!rc)
{
IUResetSwitch(&StepSizeSP);
StepSizeS[current_mode].s = ISS_ON;
StepSizeSP.s = IPS_ALERT;
IDSetSwitch(&StepSizeSP, nullptr);
StepSizeSP.reset();
StepSizeSP[current_mode].setState(ISS_ON);
StepSizeSP.setState(IPS_ALERT);
StepSizeSP.apply();
return false;
}

StepSizeSP.s = IPS_OK;
IDSetSwitch(&StepSizeSP, nullptr);
StepSizeSP.setState(IPS_OK);
StepSizeSP.apply();
return true;
}
}
Expand Down Expand Up @@ -302,8 +302,8 @@ bool DeepSkyDadFR1::getInitialStatusData()

char versionString[6] = { 0 };
snprintf(versionString, 6, "%s", response + 31);
IUSaveText(&FirmwareT[0], response);
IDSetText(&FirmwareTP, nullptr);
FirmwareTP[0].setText(response);
FirmwareTP.apply();

int motorReversed;

Expand All @@ -324,21 +324,21 @@ bool DeepSkyDadFR1::getInitialStatusData()
return false;

if(strcmp(response, "(2)") == 0)
SpeedModeS[Slow].s = ISS_ON;
SpeedModeSP[Slow].setState(ISS_ON);
else if(strcmp(response, "(3)") == 0)
SpeedModeS[Fast].s = ISS_ON;
SpeedModeSP[Fast].setState(ISS_ON);

if (!sendCommand("[GSTP]", response))
return false;

if(strcmp(response, "(1)") == 0)
StepSizeS[One].s = ISS_ON;
StepSizeSP[One].setState(ISS_ON);
else if(strcmp(response, "(2)") == 0)
StepSizeS[Two].s = ISS_ON;
StepSizeSP[Two].setState(ISS_ON);
else if(strcmp(response, "(4)") == 0)
StepSizeS[Four].s = ISS_ON;
StepSizeSP[Four].setState(ISS_ON);
else if(strcmp(response, "(8)") == 0)
StepSizeS[Eight].s = ISS_ON;
StepSizeSP[Eight].setState(ISS_ON);

return true;
}
Expand Down
9 changes: 3 additions & 6 deletions drivers/rotator/deepskydad_fr1.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,10 @@ class DeepSkyDadFR1 : public INDI::Rotator
////////////////////////////////////////////////////////////////////////////////////

// Firmware version
ITextVectorProperty FirmwareTP;
IText FirmwareT[1] {};
INDI::PropertyText FirmwareTP {1};

// Speed mode
ISwitch SpeedModeS[2];
ISwitchVectorProperty SpeedModeSP;
INDI::PropertySwitch SpeedModeSP {2};
// Step size
ISwitch StepSizeS[4];
ISwitchVectorProperty StepSizeSP;
INDI::PropertySwitch StepSizeSP {4};
};

0 comments on commit 088acee

Please sign in to comment.