diff options
author | Will Drewry <drewry@google.com> | 2017-03-10 21:44:23 +0000 |
---|---|---|
committer | Will Drewry <drewry@google.com> | 2017-03-10 21:44:23 +0000 |
commit | 4aa454a96f80ba674e3f887bc07520b5f5cfebe2 (patch) | |
tree | 7aa45326e00665faeb1711832c3989723eaa1359 /libese-hw/ese_hw_fake.c | |
parent | ed4a7a70c0f8a69188aab74fecf65f9c31b1f57c (diff) | |
download | libese-4aa454a96f80ba674e3f887bc07520b5f5cfebe2.tar.gz |
Revert "Clean up and refactor; new hw support"
This reverts commit ed4a7a70c0f8a69188aab74fecf65f9c31b1f57c.
Missed a darwin disable.
Change-Id: Ifa052cb6b6686d1e6c408f64dfd9b82b362048c0
Diffstat (limited to 'libese-hw/ese_hw_fake.c')
-rw-r--r-- | libese-hw/ese_hw_fake.c | 93 |
1 files changed, 44 insertions, 49 deletions
diff --git a/libese-hw/ese_hw_fake.c b/libese-hw/ese_hw_fake.c index 310ef06..8fe514f 100644 --- a/libese-hw/ese_hw_fake.c +++ b/libese-hw/ese_hw_fake.c @@ -16,28 +16,7 @@ * Minimal functions that only validate arguments. */ -#include "../libese/include/ese/ese.h" - -enum EseFakeHwError { - kEseFakeHwErrorEarlyClose, - kEseFakeHwErrorReceiveDuringTransmit, - kEseFakeHwErrorInvalidReceiveSize, - kEseFakeHwErrorTransmitDuringReceive, - kEseFakeHwErrorInvalidTransmitSize, - kEseFakeHwErrorTranscieveWhileBusy, - kEseFakeHwErrorEmptyTransmit, - kEseFakeHwErrorMax, -}; - -static const char *kErrorMessages[] = { - "Interface closed without finishing transmission.", - "Receive called without completing transmission.", - "Invalid receive buffer supplied with non-zero length.", - "Transmit called without completing reception.", - "Invalid transmit buffer supplied with non-zero length.", - "Transceive called while other I/O in process.", - "Transmitted no data.", /* Can reach this by setting tx_len = 0. */ -}; +#include <ese/ese.h> static int fake_open(struct EseInterface *ese, void *hw_opts __attribute__((unused))) { @@ -46,45 +25,50 @@ static int fake_open(struct EseInterface *ese, return 0; } -static void fake_close(struct EseInterface *ese) { +static int fake_close(struct EseInterface *ese) { + if (!ese) + return -1; if (!ese->pad[0] || !ese->pad[1]) { /* Set by caller. ese->error.is_error = 1; */ - ese_set_error(ese, kEseFakeHwErrorEarlyClose); - return; + ese_set_error(ese, 0); + return -1; } + return 0; } -static uint32_t fake_receive(struct EseInterface *ese, uint8_t *buf, - uint32_t len, int complete) { +static size_t fake_receive(struct EseInterface *ese, uint8_t *buf, size_t len, + int complete) { + if (!ese) + return -1; if (!ese->pad[1]) { - ese_set_error(ese, kEseFakeHwErrorReceiveDuringTransmit); + ese_set_error(ese, 1); return -1; } ese->pad[0] = complete; if (!buf && len) { - ese_set_error(ese, kEseFakeHwErrorInvalidReceiveSize); + ese_set_error(ese, 2); return -1; } - if (!len) { + if (!len) return 0; - } return len; } -static uint32_t fake_transmit(struct EseInterface *ese, const uint8_t *buf, - uint32_t len, int complete) { +static size_t fake_transmit(struct EseInterface *ese, const uint8_t *buf, + size_t len, int complete) { + if (!ese) + return -1; if (!ese->pad[0]) { - ese_set_error(ese, kEseFakeHwErrorTransmitDuringReceive); + ese_set_error(ese, 3); return -1; } ese->pad[1] = complete; if (!buf && len) { - ese_set_error(ese, kEseFakeHwErrorInvalidTransmitSize); + ese_set_error(ese, 4); return -1; } - if (!len) { + if (!len) return 0; - } return len; } @@ -92,7 +76,7 @@ static int fake_poll(struct EseInterface *ese, uint8_t poll_for, float timeout, int complete) { /* Poll begins a receive-train so transmit needs to be completed. */ if (!ese->pad[1]) { - ese_set_error(ese, kEseFakeHwErrorReceiveDuringTransmit); + ese_set_error(ese, 1); return -1; } if (timeout == 0.0f) { @@ -107,27 +91,26 @@ static int fake_poll(struct EseInterface *ese, uint8_t poll_for, float timeout, return 0; } -uint32_t fake_transceive(struct EseInterface *ese, const uint8_t *tx_buf, - uint32_t tx_len, uint8_t *rx_buf, uint32_t rx_len) { - uint32_t processed = 0; +size_t fake_transceive(struct EseInterface *ese, const uint8_t *tx_buf, + size_t tx_len, uint8_t *rx_buf, size_t rx_len) { + size_t processed = 0; if (!ese->pad[0] || !ese->pad[1]) { - ese_set_error(ese, kEseFakeHwErrorTranscieveWhileBusy); + ese_set_error(ese, 5); return 0; } while (processed < tx_len) { - uint32_t sent = fake_transmit(ese, tx_buf, tx_len, 0); + size_t sent = fake_transmit(ese, tx_buf, tx_len, 0); if (sent == 0) { - if (ese_error(ese)) { + if (ese->error.is_err) return 0; - } - ese_set_error(ese, kEseFakeHwErrorEmptyTransmit); + ese_set_error(ese, 6); return 0; } processed += sent; } fake_transmit(ese, NULL, 0, 1); /* Complete. */ if (fake_poll(ese, 0xad, 10, 0) != 1) { - ese_set_error(ese, kEseGlobalErrorPollTimedOut); + ese_set_error(ese, -2); return 0; } /* A real implementation would have protocol errors to contend with. */ @@ -144,8 +127,20 @@ static const struct EseOperations ops = { .poll = &fake_poll, .close = &fake_close, .opts = NULL, - .errors = kErrorMessages, - .errors_count = sizeof(kErrorMessages), }; ESE_DEFINE_HW_OPS(ESE_HW_FAKE, ops); +/* TODO(wad) move opts to data. +const void *ESE_HW_FAKE_data = NULL; +*/ + +static const char *kErrorMessages[] = { + "Interface closed without finishing transmission.", + "Receive called without completing transmission.", + "Invalid receive buffer supplied with non-zero length.", + "Transmit called without completing reception.", + "Invalid transmit buffer supplied with non-zero length.", + "Transceive called while other I/O in process.", + "Transmitted no data.", /* Can reach this by setting tx_len = 0. */ +}; +ESE_DEFINE_HW_ERRORS(ESE_HW_FAKE, kErrorMessages); |