-
-
Notifications
You must be signed in to change notification settings - Fork 10
sleep_time_based_on_baud leads to incomplete response.. #8
Description
Hi,
I have an AT command that returns long response (actually a json repr of a LwM2M object).
When I excecute it, I get an error be cause the decoded response is incomplete: the OK line as per expected response, is not catched by the exec.
More precisely, the missed lines are due to this loop:
ATtila/attila/atcommunicator.py
Lines 204 to 215 in 0f8548d
| while ( | |
| self._device.in_waiting == 0 | |
| and sleep_time_based_on_baud > t_waiting_elapsed | |
| ): | |
| sleep(mini_sleep_time) # 1ms | |
| t_waiting_elapsed += mini_sleep_time | |
| # Check if there are still data available | |
| if self._device.in_waiting > 0: | |
| data_still_available = True | |
| else: | |
| data_still_available = False | |
| data += read_bytes |
Indeed, debugging shows that it did not wait "enough" for data to be ready i.e polling the condition self._device.in_waiting.
So I multiplied by 10 the sleeping time in the lines
ATtila/attila/atcommunicator.py
Line 191 in 0f8548d
| sleep_time_based_on_baud = 100 / self.baud_rate # Milliseconds |
to become
sleep_time_based_on_baud = 1000 / self.baud_rate # Milliseconds To my understanding the inverse of baudrate (units in bits/sec) is to be multiplied by 1000 to convert to ms !
@veeso, what do you think ?
This said, I did not have an issue when the response size was small...
Cheers,
Roudy