fix the host/emulation build
Going for __ARM__ to distinguish host and firmware builds is not
sufficient here, since we might be building on a ARM host, so there is
now a OCTSIMFWBUILD define.
Change-Id: Ib07a58b6102b1709f295d08a764c6f118a2d0b9e
diff --git a/ccid_common/ccid_slot_fsm.c b/ccid_common/ccid_slot_fsm.c
index 3a591d7..08cbbad 100644
--- a/ccid_common/ccid_slot_fsm.c
+++ b/ccid_common/ccid_slot_fsm.c
@@ -98,7 +98,11 @@
osmo_fsm_inst_dispatch(ss->fi, ISO7816_E_POWER_UP_IND, NULL);
cs->icc_powered = true;
card_uart_ctrl(ss->cuart, CUART_CTL_CLOCK, true);
+#ifdef OCTSIMFWBUILD
delay_us(10000);
+#else
+ usleep(10000);
+#endif
osmo_fsm_inst_dispatch(ss->fi, ISO7816_E_RESET_REL_IND, NULL);
card_uart_ctrl(ss->cuart, CUART_CTL_RST, false);
@@ -119,7 +123,9 @@
case ISO7816_E_PPS_DONE_IND:
case ISO7816_E_PPS_FAILED_IND:
cs->event_data = data;
+#ifdef OCTSIMFWBUILD
asm volatile("dmb st": : :"memory");
+#endif
cs->event = event;
break;
default:
@@ -329,35 +335,38 @@
void *ctx = g_tall_ctx; /* FIXME */
struct iso_fsm_slot *ss = ccid_slot2iso_fsm_slot(cs);
struct card_uart *cuart = talloc_zero(ctx, struct card_uart);
- char id_buf[16] = "SIM0";
- char devname[] = "foobar";
+ char id_buf[3+3+1];
+ char devname[2+1];
+ char *devnamep = 0;
+ char *drivername = "asf4";
int rc;
LOGPCS(cs, LOGL_DEBUG, "%s\n", __func__);
- /* HACK: make this in some way configurable so it works both in the firmware
- * and on the host (functionfs) */
-// if (cs->slot_nr == 0) {
-// cs->icc_present = true;
-// devname = "/dev/ttyUSB5";
-// }
- devname[0] = cs->slot_nr +0x30;
- devname[1] = 0;
- //sprintf(devname, "%d", cs->slot_nr);
+ snprintf(id_buf, sizeof(id_buf), "SIM%d", cs->slot_nr);
+#ifdef OCTSIMFWBUILD
+ snprintf(devname, sizeof(devname), "%d", cs->slot_nr);
+ devnamep = devname;
+#else
+ if (cs->slot_nr == 0) {
+ cs->icc_present = true;
+ devnamep = "/dev/ttyUSB5";
+ }
+ drivername = "tty";
+#endif
if (!cuart)
return -ENOMEM;
- //snprintf(id_buf, sizeof(id_buf), "SIM%d", cs->slot_nr);
- id_buf[3] = cs->slot_nr +0x30;
- if (devname) {
- rc = card_uart_open(cuart, "asf4", devname);
+ if (devnamep) {
+ rc = card_uart_open(cuart, drivername, devnamep);
if (rc < 0) {
LOGPCS(cs, LOGL_ERROR, "Cannot open UART %s: %d\n", devname, rc);
talloc_free(cuart);
return rc;
}
}
+
ss->fi = iso7816_fsm_alloc(ctx, LOGL_DEBUG, id_buf, cuart, iso_fsm_clot_user_cb, ss);
if (!ss->fi) {
LOGPCS(cs, LOGL_ERROR, "Cannot allocate ISO FSM\n");