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.

In my opinion, it's ready for release. But I'm happy to keep testing if there are any other changes you'd like to make.

Read More...


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>


Read More...

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.

As best I can tell, the driver never hits SelectFilterDone() at line 143.
(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.

The following diff seems to fix the issue:
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)

With that in place, I see the following in the logs:
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.


Read More...

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


Read More...

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.

We could probably trim "WV:" off the front of the version response. I also see a serial port error raised once per second when the filter wheel is disconnected.

SThPDJZ.png

I'm trying to enable debug logging, but can't for some reason. Every time I click "Enable" it flicks back to "Disabled"

Read More...

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)

If it helps any, the value at line 210 is:
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"


Read More...

I'm not entirely sure how to go about attaching a debugger to my build of K-stars. I'm running on OS-X, and I'm not particularly familiar with developer tools. Any chance there's a basic guide that can get me started? Perhaps with GDB?

If it helps any, VI shows the metacharacters being logged in the response:

DEBUG 25.533668 sec : CMD <WM:1>
DEBUG 25.558617 sec : RES <WM:1^M>

The filter wheel seems to be sending windows style \r\n terminated responses.

Read More...