Yes, it works great, and it's included in the latest builds.
Read More...
As a hack, you could probably schedule a single light photo using the dark filter before scheduling the darks. That should ensure the filter wheel is in the correct position for the darks.
Read More...
I definitely know that feeling.
The latest version works great. I played around with the CCD simulator, checked the logs, etc...
INFO 17.208808 sec : Session log file /home/stellarmate/.indi/logs/2022-12-14/indi_pegasusindigo_wheel/indi_pegasusindigo_wheel_22:30:32.log
INFO 17.209149 sec : Setting current filter to slot 1
DEBUG 17.209260 sec : CMD <WM:1>
DEBUG 17.229133 sec : RES <WM:1>
DEBUG 17.232087 sec : Configuration successfully saved for FILTER_NAME.
DEBUG 17.232829 sec : Configuration successfully loaded.
DEBUG 17.550875 sec : CMD <WF>
DEBUG 17.565074 sec : RES <WF:1>
INFO 46.674874 sec : Setting current filter to slot 2
DEBUG 46.675025 sec : CMD <WM:2>
DEBUG 46.697441 sec : RES <WM:2>
DEBUG 47.596946 sec : CMD <WF>
DEBUG 47.609581 sec : RES <WF:-1>
DEBUG 48.611075 sec : CMD <WF>
DEBUG 48.633403 sec : RES <WF:-1>
DEBUG 49.634912 sec : CMD <WF>
DEBUG 49.657163 sec : RES <WF:2>
INFO 51.587302 sec : Setting current filter to slot 3
DEBUG 51.587489 sec : CMD <WM:3>
DEBUG 51.624850 sec : RES <WM:3>
DEBUG 51.658917 sec : CMD <WF>
DEBUG 51.672977 sec : RES <WF:-1>
DEBUG 52.674392 sec : CMD <WF>
DEBUG 52.696914 sec : RES <WF:-1>
DEBUG 53.698437 sec : CMD <WF>
DEBUG 53.720890 sec : RES <WF:3>
INFO 56.705863 sec : Setting current filter to slot 7
DEBUG 56.706003 sec : CMD <WM:7>
DEBUG 56.744128 sec : RES <WM:7>
DEBUG 56.744381 sec : CMD <WF>
DEBUG 56.760269 sec : RES <WF:-1>
DEBUG 57.761650 sec : CMD <WF>
DEBUG 57.784209 sec : RES <WF:-1>
DEBUG 58.785723 sec : CMD <WF>
DEBUG 58.808219 sec : RES <WF:-1>
DEBUG 59.809665 sec : CMD <WF>
DEBUG 59.831927 sec : RES <WF:-1>
DEBUG 60.833360 sec : CMD <WF>
DEBUG 60.855839 sec : RES <WF:7>
INFO 69.570880 sec : Setting current filter to slot 1
DEBUG 69.571025 sec : CMD <WM:1>
DEBUG 69.606585 sec : RES <WM:1>
DEBUG 69.865657 sec : CMD <WF>
DEBUG 69.878836 sec : RES <WF:-1>
DEBUG 70.880338 sec : CMD <WF>
DEBUG 70.902709 sec : RES <WF:-1>
DEBUG 71.904225 sec : CMD <WF>
DEBUG 71.926607 sec : RES <WF:-1>
DEBUG 72.928122 sec : CMD <WF>
DEBUG 72.950471 sec : RES <WF:-1>
DEBUG 73.951891 sec : CMD <WF>
DEBUG 73.974325 sec : RES <WF:-1>
DEBUG 74.975725 sec : CMD <WF>
DEBUG 74.998240 sec : RES <WF:-1>
DEBUG 75.999718 sec : CMD <WF>
DEBUG 76.022535 sec : RES <WF:1>
INFO 110.083701 sec : Setting current filter to slot 2
DEBUG 110.083960 sec : CMD <WM:2>
DEBUG 110.114266 sec : RES <WM:2>
DEBUG 111.066050 sec : CMD <WF>
DEBUG 111.090077 sec : RES <WF:-1>
DEBUG 112.091662 sec : CMD <WF>
DEBUG 112.114044 sec : RES <WF:-1>
DEBUG 113.115736 sec : CMD <WF>
DEBUG 113.137860 sec : RES <WF:2>
INFO 120.959134 sec : Setting current filter to slot 6
DEBUG 120.959361 sec : CMD <WM:6>
DEBUG 120.992739 sec : RES <WM:6>
DEBUG 121.147036 sec : CMD <WF>
DEBUG 121.168881 sec : RES <WF:-1>
DEBUG 122.170387 sec : CMD <WF>
DEBUG 122.192789 sec : RES <WF:-1>
DEBUG 123.194346 sec : CMD <WF>
DEBUG 123.216701 sec : RES <WF:-1>
DEBUG 124.218347 sec : CMD <WF>
DEBUG 124.240610 sec : RES <WF:-1>
DEBUG 125.242142 sec : CMD <WF>
DEBUG 125.264349 sec : RES <WF:6>
INFO 134.144206 sec : Setting current filter to slot 1
DEBUG 134.144584 sec : CMD <WM:1>
DEBUG 134.175423 sec : RES <WM:1>
DEBUG 134.274087 sec : CMD <WF>
DEBUG 134.287374 sec : RES <WF:-1>
DEBUG 135.288849 sec : CMD <WF>
DEBUG 135.311184 sec : RES <WF:-1>
DEBUG 136.312685 sec : CMD <WF>
DEBUG 136.335012 sec : RES <WF:-1>
DEBUG 137.336537 sec : CMD <WF>
DEBUG 137.358856 sec : RES <WF:-1>
DEBUG 138.360356 sec : CMD <WF>
DEBUG 138.382787 sec : RES <WF:-1>
DEBUG 139.384314 sec : CMD <WF>
DEBUG 139.406622 sec : RES <WF:1>
INFO 156.035577 sec : Pegasus INDIGO is offline.
My patch adds response. The original code doesn't pass response to sendCommand().
Read More...
I should mention that along with the log entries, the Filter Slot status icon never changes to green, and the filter position never updates.
My proposed patch resolves all 3 issues.
H43OdVY.png
Read More...
The continuous WF log entries are still an issue with the latest commit. Was there a problem with the patch I proposed in my previous reply? It seems to fix things.
INFO 24.877526 sec : Session log file /home/stellarmate/.indi/logs/2022-12-14/indi_pegasusindigo_wheel/indi_pegasusindigo_wheel_19:56:57.log
INFO 24.877676 sec : Setting current filter to slot 1
DEBUG 24.877725 sec : CMD <WM:1>
DEBUG 24.891831 sec : RES <WM:1>
DEBUG 24.893191 sec : Configuration successfully saved for FILTER_NAME.
DEBUG 24.893521 sec : Configuration successfully loaded.
DEBUG 25.188256 sec : CMD <WF>
DEBUG 26.188830 sec : CMD <WF>
DEBUG 27.190110 sec : CMD <WF>
DEBUG 28.191619 sec : CMD <WF>
DEBUG 29.192966 sec : CMD <WF>
DEBUG 30.194325 sec : CMD <WF>
DEBUG 31.195668 sec : CMD <WF>
DEBUG 32.196961 sec : CMD <WF>
DEBUG 33.198253 sec : CMD <WF>
DEBUG 34.199642 sec : CMD <WF>
DEBUG 35.201334 sec : CMD <WF>
DEBUG 36.203255 sec : CMD <WF>
DEBUG 37.204883 sec : CMD <WF>
DEBUG 38.206551 sec : CMD <WF>
DEBUG 39.208060 sec : CMD <WF>
DEBUG 40.209701 sec : CMD <WF>
DEBUG 41.211316 sec : CMD <WF>
DEBUG 42.212889 sec : CMD <WF>
DEBUG 43.214221 sec : CMD <WF>
DEBUG 44.215833 sec : CMD <WF>
DEBUG 45.217620 sec : CMD <WF>
DEBUG 46.219300 sec : CMD <WF>
DEBUG 47.221041 sec : CMD <WF>
DEBUG 48.222904 sec : CMD <WF>
DEBUG 49.224984 sec : CMD <WF>
DEBUG 50.226658 sec : CMD <WF>
DEBUG 51.228447 sec : CMD <WF>
DEBUG 52.230095 sec : CMD <WF>
DEBUG 53.231425 sec : CMD <WF>
DEBUG 54.232827 sec : CMD <WF>
DEBUG 55.234292 sec : CMD <WF>
DEBUG 56.235891 sec : CMD <WF>
DEBUG 57.237321 sec : CMD <WF>
DEBUG 58.239273 sec : CMD <WF>
DEBUG 59.240114 sec : CMD <WF>
DEBUG 60.241433 sec : CMD <WF>
DEBUG 61.242743 sec : CMD <WF>
DEBUG 62.244091 sec : CMD <WF>
DEBUG 63.245504 sec : CMD <WF>
DEBUG 64.246882 sec : CMD <WF>
The new update makes the Serial write error go away. The filter wheel version number is also correct.
I still see the WF command being sent every second in the debug logs:
INFO 227.063863 sec : Pegasus INDIGO is online.
DEBUG 227.064552 sec : CMD <WV>
DEBUG 227.079659 sec : RES <WV:1.2>
DEBUG 228.064635 sec : CMD <WF>
DEBUG 229.065935 sec : CMD <WF>
DEBUG 230.067225 sec : CMD <WF>
INFO 230.300844 sec : Setting current filter to slot 2
DEBUG 230.300985 sec : CMD <WM:2>
DEBUG 230.327024 sec : RES <WM:2>
DEBUG 231.068405 sec : CMD <WF>
DEBUG 232.070111 sec : CMD <WF>
INFO 232.959201 sec : Setting current filter to slot 1
DEBUG 232.959480 sec : CMD <WM:1>
DEBUG 232.982931 sec : RES <WM:1>
DEBUG 233.070819 sec : CMD <WF>
DEBUG 234.072282 sec : CMD <WF>
DEBUG 235.073851 sec : CMD <WF>
DEBUG 236.075557 sec : CMD <WF>
DEBUG 237.076402 sec : CMD <WF>
DEBUG 238.077982 sec : CMD <WF>
DEBUG 239.079320 sec : CMD <WF>
INFO 239.687003 sec : Pegasus INDIGO is offline.
(gdb) break /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:143
Breakpoint 1 at 0x557de09e20: file /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp, line 143.
(gdb) c
Continuing.
diff --git a/drivers/filter_wheel/pegasus_indigo.cpp b/drivers/filter_wheel/pegasus_indigo.cpp
index b184decad..972052857 100644
--- a/drivers/filter_wheel/pegasus_indigo.cpp
+++ b/drivers/filter_wheel/pegasus_indigo.cpp
@@ -134,7 +134,7 @@ void PegasusINDIGO::TimerHit()
if (isConnected() && FilterSlotNP.s == IPS_BUSY)
{
char response[DRIVER_LEN] = {0};
- if (sendCommand("WF"))
+ if (sendCommand("WF", response))
{
int position = -1;
if (sscanf(response, "WF:%d", &position) == 1)
INFO 181.999770 sec : Pegasus INDIGO is online.
DEBUG 182.000172 sec : CMD <WV>
DEBUG 182.015682 sec : RES <WV:1.2>
INFO 185.342267 sec : Setting current filter to slot 1
DEBUG 185.342539 sec : CMD <WM:1>
DEBUG 185.375298 sec : RES <WM:1>
DEBUG 186.002934 sec : CMD <WF>
DEBUG 186.015014 sec : RES <WF:-1>
DEBUG 187.016328 sec : CMD <WF>
DEBUG 187.038995 sec : RES <WF:-1>
DEBUG 188.040434 sec : CMD <WF>
DEBUG 188.062985 sec : RES <WF:-1>
DEBUG 189.064485 sec : CMD <WF>
DEBUG 189.086792 sec : RES <WF:1>
INFO 194.713997 sec : Setting current filter to slot 7
DEBUG 194.714204 sec : CMD <WM:7>
DEBUG 194.750045 sec : RES <WM:7>
DEBUG 195.093203 sec : CMD <WF>
DEBUG 195.117954 sec : RES <WF:-1>
DEBUG 196.119440 sec : CMD <WF>
DEBUG 196.141981 sec : RES <WF:-1>
DEBUG 197.143499 sec : CMD <WF>
DEBUG 197.165692 sec : RES <WF:-1>
DEBUG 198.166977 sec : CMD <WF>
DEBUG 198.189555 sec : RES <WF:-1>
DEBUG 199.190985 sec : CMD <WF>
DEBUG 199.213615 sec : RES <WF:-1>
DEBUG 200.215133 sec : CMD <WF>
DEBUG 200.237485 sec : RES <WF:7>
INFO 206.282713 sec : Setting current filter to slot 1
DEBUG 206.282891 sec : CMD <WM:1>
DEBUG 206.316700 sec : RES <WM:1>
DEBUG 207.245849 sec : CMD <WF>
DEBUG 207.260594 sec : RES <WF:-1>
DEBUG 208.261946 sec : CMD <WF>
DEBUG 208.284591 sec : RES <WF:-1>
DEBUG 209.285932 sec : CMD <WF>
DEBUG 209.308229 sec : RES <WF:-1>
DEBUG 210.309508 sec : CMD <WF>
DEBUG 210.332186 sec : RES <WF:-1>
DEBUG 211.333015 sec : CMD <WF>
DEBUG 211.356101 sec : RES <WF:-1>
DEBUG 212.357608 sec : CMD <WF>
DEBUG 212.379995 sec : RES <WF:1>
INFO 215.036573 sec : Pegasus INDIGO is offline.
I'm building the latest version. I'll see if the isConnected check makes the error go away.
Read More...
I'm not a C++ guy, but in this block of code I'm not entirely clear how response is updated after sending the WF command:
github.com/indilib/indi/blob/master/driv...indigo.cpp#L132-L149
Read More...
The serial write error shows up after disconnecting the filter wheel, and disappears when I reconnect it.
I'm not 100% sure what triggers it, but I suspect it's part of the wait loop which checks if the filter is moving.
Read More...
I suspect the serial write error is related to the WF command I noticed in my original logs. Perhaps this debugging information will be useful?
(gdb) break /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:140
Breakpoint 2 at 0x558bec9db0: file /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp, line 140.
(gdb) c
Continuing.
Breakpoint 2, PegasusINDIGO::TimerHit (this=0x55b18152b0) at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:140
140 if (sscanf(response, "WF:%d", &position) == 1)
(gdb) p response
$4 = '\000' <repeats 127 times>
(gdb) p position
$5 = -1
The new code seems to be processing reponses correctly.
Breakpoint 1, PegasusINDIGO::sendCommand (this=0x55b18152b0, cmd=0x558bef7318 "W#", res=0x7fcd8c18d0 "FW_OK", cmd_len=-1, res_len=-1)
at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:210
210 LOGF_DEBUG("RES <%s>", res);
(gdb) p res
$1 = 0x7fcd8c18d0 "FW_OK"
(gdb) c
Continuing.
Breakpoint 1, PegasusINDIGO::sendCommand (this=0x55b18152b0, cmd=0x558bef7328 "WV", res=0x7fcd8c1c50 "WV:1.2", cmd_len=-1, res_len=-1)
at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:210
210 LOGF_DEBUG("RES <%s>", res);
(gdb) p res
$2 = 0x7fcd8c1c50 "WV:1.2"
(gdb) c
Continuing.
Breakpoint 1, PegasusINDIGO::sendCommand (this=0x55b18152b0, cmd=0x7fcd8c1eb0 "WM:2", res=0x7fcd8c1e30 "WM:2", cmd_len=-1, res_len=-1)
at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:210
210 LOGF_DEBUG("RES <%s>", res);
(gdb) p res
$3 = 0x7fcd8c1e30 "WM:2"
(gdb) c
Continuing.
In progress. I'll let you know when I have results.
Read More...
By the way... I think there's a bug on
line 110:
The firmware version command is WV, and not FV.
Read More...
Hi Jasem,
I was able to get a proper debugging environment setup.
Here's some of the values of res on line 209, from the current head commit (bb0f4b73c375290d8a3e79760812f53c19b68bbd):
Breakpoint 1, PegasusINDIGO::sendCommand (this=0x557a9af2b0, cmd=0x55639a7318 "W#", res=0x7fd6c78ed0 "FW_OK\r\n", cmd_len=-1, res_len=-1)
at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:209
209 res[nbytes_read - 1] = 0;
(gdb) p res
$2 = 0x7fd6c78ed0 "FW_OK\r\n"
(gdb) c
Continuing.
Breakpoint 1, PegasusINDIGO::sendCommand (this=0x557a9af2b0, cmd=0x55639a7328 "FV", res=0x7fd6c79250 ">>\r\n", cmd_len=-1, res_len=-1)
at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:209
209 res[nbytes_read - 1] = 0;
(gdb) p res
$3 = 0x7fd6c79250 ">>\r\n"
(gdb) c
Continuing.
Breakpoint 1, PegasusINDIGO::sendCommand (this=0x557a9af2b0, cmd=0x7fd6c794b0 "WM:1", res=0x7fd6c79430 "WM:1\r\n", cmd_len=-1, res_len=-1)
at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:209
209 res[nbytes_read - 1] = 0;
(gdb) p res
$4 = 0x7fd6c79430 "WM:1\r\n"
(gdb)
Breakpoint 2, PegasusINDIGO::sendCommand (this=0x557a9af2b0, cmd=0x7fd6c794b0 "WM:1", res=0x7fd6c79430 "WM:1\r", cmd_len=-1, res_len=-1)
at /home/stellarmate/Projects/indi/drivers/filter_wheel/pegasus_indigo.cpp:210
210 LOGF_DEBUG("RES <%s>", res);
(gdb) p res
$5 = 0x7fd6c79430 "WM:1\r"