diff --git a/units/1wire/unit_1wire.c b/units/1wire/unit_1wire.c index 3373936..8353bba 100644 --- a/units/1wire/unit_1wire.c +++ b/units/1wire/unit_1wire.c @@ -94,21 +94,18 @@ static void U1WIRE_TimerCb(TimerHandle_t xTimer) uint32_t time = PTIM_GetTime(); if (time - priv->busyStart > 1000) { - dbg("Timeout 1s not ready. Stopping polling timer."); +// dbg("Wait timed out. Stopping polling timer."); xTimerStop(xTimer, 100); com_respond_error(priv->busyRequestId, E_HW_TIMEOUT); priv->busy = false; - dbg("Done, timer stopped."); } } return; halt_ok: - dbg("End of measurement, stopping timer"); xTimerStop(xTimer, 100); com_respond_ok(priv->busyRequestId); priv->busy = false; - dbg("Done, timer stopped."); } /** Allocate data structure and set defaults */ @@ -217,21 +214,24 @@ static error_t U1WIRE_handleRequest(Unit *unit, TF_ID frame_id, uint8_t command, if (priv->busy) return E_BUSY; switch (command) { + case CMD_SEARCH_ADDR: + // TODO + return E_NOT_IMPLEMENTED; + + case CMD_SEARCH_ALARM: + // TODO + return E_NOT_IMPLEMENTED; + /** Simply check presence of any devices on the bus. Responds with SUCCESS or HW_TIMEOUT */ case CMD_CHECK_PRESENCE: - dbg("Test presence"); - // reset presence = ow_reset(unit); - if (!presence) return E_HW_TIMEOUT; - // build response - com_respond_ok(frame_id); + com_respond_u8(frame_id, (uint8_t) presence); return E_SUCCESS; /** Read address of the single device on the bus - returns u64 */ case CMD_READ_ADDR: - dbg("Write ADDR"); // reset presence = ow_reset(unit); if (!presence) return E_HW_TIMEOUT; @@ -257,8 +257,6 @@ static error_t U1WIRE_handleRequest(Unit *unit, TF_ID frame_id, uint8_t command, */ case CMD_MATCH_WRITE: case CMD_SKIP_WRITE: - dbg("Write cmd"); - // reset presence = ow_reset(unit); if (!presence) return E_HW_TIMEOUT; @@ -282,8 +280,6 @@ static error_t U1WIRE_handleRequest(Unit *unit, TF_ID frame_id, uint8_t command, */ case CMD_MATCH_READ: case CMD_SKIP_READ:; - dbg("Read cmd"); - // reset presence = ow_reset(unit); if (!presence) return E_HW_TIMEOUT; @@ -316,19 +312,16 @@ static error_t U1WIRE_handleRequest(Unit *unit, TF_ID frame_id, uint8_t command, * Non-parasitic: Returns SUCCESS after device responds '1', HW_TIMEOUT after 1s */ case CMD_POLL_FOR_1: - dbg("Poll for 1 - start"); if (priv->parasitic) { assert_param(pdPASS == xTimerChangePeriod(priv->busyWaitTimer, 750, 100)); - } - else { + } else { // every 10 ticks assert_param(pdPASS == xTimerChangePeriod(priv->busyWaitTimer, 10, 100)); } - assert_param(pdPASS == xTimerReset(priv->busyWaitTimer, 100)); + assert_param(pdPASS == xTimerStart(priv->busyWaitTimer, 100)); priv->busy = true; priv->busyStart = PTIM_GetTime(); priv->busyRequestId = frame_id; - dbg("Timer dispatched"); return E_SUCCESS; // We will respond when the timer expires //