aboutsummaryrefslogtreecommitdiff
path: root/libese-hw/ese_hw_fake.c
diff options
context:
space:
mode:
authorWill Drewry <drewry@google.com>2017-03-10 21:44:23 +0000
committerWill Drewry <drewry@google.com>2017-03-10 21:44:23 +0000
commit4aa454a96f80ba674e3f887bc07520b5f5cfebe2 (patch)
tree7aa45326e00665faeb1711832c3989723eaa1359 /libese-hw/ese_hw_fake.c
parented4a7a70c0f8a69188aab74fecf65f9c31b1f57c (diff)
downloadlibese-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.c93
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);