Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / src / telelco-v0.2 / ao_lco.c
index 0bbb76f10218d651cc53d6b8ac5b88978c4ad626..12a247bf05dfaa59d2d74a6c39a671ae6b993d4e 100644 (file)
@@ -251,18 +251,22 @@ ao_lco_search(void)
 {
        uint16_t        tick_offset;
        int8_t          r;
+       int8_t          try;
        uint8_t         box;
 
        ao_lco_box_reset_present();
        for (box = 0; box < AO_PAD_MAX_BOXES; box++) {
                if ((box % 10) == 0)
                        ao_lco_set_box(box);
-               tick_offset = 0;
-               r = ao_lco_query(box, &ao_pad_query, &tick_offset);
-               PRINTD("box %d result %d\n", box, r);
-               if (r == AO_RADIO_CMAC_OK) {
-                       ao_lco_box_set_present(box);
-                       ao_delay(AO_MS_TO_TICKS(30));
+               for (try = 0; try < 3; try++) {
+                       tick_offset = 0;
+                       r = ao_lco_query(box, &ao_pad_query, &tick_offset);
+                       PRINTD("box %d result %d\n", box, r);
+                       if (r == AO_RADIO_CMAC_OK) {
+                               ao_lco_box_set_present(box);
+                               ao_delay(AO_MS_TO_TICKS(30));
+                               break;
+                       }
                }
        }
        if (ao_lco_min_box <= ao_lco_max_box)
@@ -365,9 +369,7 @@ ao_lco_monitor(void)
                        delay = AO_MS_TO_TICKS(100);
                else
                        delay = AO_SEC_TO_TICKS(1);
-               ao_alarm(delay);
-               ao_sleep(&ao_lco_armed);
-               ao_clear_alarm();
+               ao_sleep_for(&ao_lco_armed, delay);
        }
 }