Hej
Noterade precis de commits som precis gjorts mot framförallt
laser.c och dio.c och en del av de ändringarna kommer att göra att saker går
sönder med avseende på hur trådar startas/stoppas.
Först och främst en liten sak bara så att ingen är förvirrad
över det, roboten startar numera i ett inaktivt state och för att starta den
måste man sedan trycka på start/stopp knappen (eller skicka SIGUSR1 signalen
till programmet).
För att sedan stoppa (d.v.s. stoppa som i att roboten ska
stanna, stänger ner en del av trådarna och tar och väntar på ny knap/signal) den
så gör man samma sak igen.
Till problemen då.
Det är ändrat så att got_shot_loop kommer att fortsätta att
köras även efter stop. Men vid stop så väntar roboten på att denna tråd stänger
av sig och vid start så startar den upp en ny sådan tråd. Så med ändringen som
det ser ut nu kommer roboten att när den stoppas hänga och vänta på den tråden
i all evighet och aldrig komma ur stop fasen utan att man manuellt dödar och
startar programmet igen.
Sedan funderar jag också över motveringen till ändringarna i
laser_start, här kommer saker iaf inte att gå sönder eftersom tråden explicit
dödas med pthread_cancel för tillfället (eftersom tråden med största
sannolikhet kommer att ligga och blockera på shoot_mutex när roboten stoppas).
Och ingen av ändringarna kommer troligen att göra något ”säkrare”
på något sätt vad jag kan se i vilket fall som helst.
Och nu ser jag att ännu fler trådar håller på att bli av med
sina stopvillkor så nu skickar jag iväg mailet innan mer saker blir trasiga…
Noterade en bugg i hjulstyr_disable nu också, felet är _INTE_
att SPEED_ZERO var fel, denna ska vara 0. Felet var att det i
hjulstyr_disable borde stått SPEED_ZERO + SPEED_OFFSET.
//Joakim Tosteberg