laforge has uploaded this change for review. (
https://gerrit.osmocom.org/c/simtrace2/+/26996 )
Change subject: cardem: Report the VCC voltage (if supported)
......................................................................
cardem: Report the VCC voltage (if supported)
The SIMtrace2 protocol alwasy contained a field for the VCC voltage,
the cardem firmware just never populated that field, even on those
boards that use the ADC to determine its voltage.
Change-Id: Idcecad553fb36380e916378e1420488acbbfa8e3
---
M firmware/libcommon/include/card_emu.h
M firmware/libcommon/source/card_emu.c
M firmware/libcommon/source/mode_cardemu.c
3 files changed, 21 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/96/26996/1
diff --git a/firmware/libcommon/include/card_emu.h
b/firmware/libcommon/include/card_emu.h
index 177fad2..2668d73 100644
--- a/firmware/libcommon/include/card_emu.h
+++ b/firmware/libcommon/include/card_emu.h
@@ -69,6 +69,8 @@
void card_emu_uart_wait_tx_idle(uint8_t uart_chan);
void card_emu_uart_interrupt(uint8_t uart_chan);
+int card_emu_get_vcc(uint8_t uart_chan);
+
struct cardemu_usb_msg_config;
int card_emu_set_config(struct card_handle *ch, const struct cardemu_usb_msg_config
*scfg,
unsigned int scfg_len);
diff --git a/firmware/libcommon/source/card_emu.c b/firmware/libcommon/source/card_emu.c
index 19a519a..c85b08c 100644
--- a/firmware/libcommon/source/card_emu.c
+++ b/firmware/libcommon/source/card_emu.c
@@ -1058,7 +1058,10 @@
sts->flags |= CEMU_STATUS_F_CLK_ACTIVE;
if (ch->in_reset)
sts->flags |= CEMU_STATUS_F_RESET_ACTIVE;
- /* FIXME: voltage + card insert */
+#ifdef DETECT_VCC_BY_ADC
+ sts->voltage_mv = card_emu_get_vcc(ch->num);
+#endif
+ /* FIXME: card insert */
sts->F_index = ch->F_index;
sts->D_index = ch->D_index;
sts->wi = ch->wi;
@@ -1102,7 +1105,12 @@
card_set_state(ch, ISO_S_WAIT_POWER);
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
} else if (active == 1 && ch->vcc_active == 0) {
+#ifdef DETECT_VCC_BY_ADC
+ TRACE_INFO("%u: VCC activated (%d mV)\r\n", ch->num,
+ card_emu_get_vcc(ch->num));
+#else
TRACE_INFO("%u: VCC activated\r\n", ch->num);
+#endif
card_set_state(ch, ISO_S_WAIT_CLK);
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
}
diff --git a/firmware/libcommon/source/mode_cardemu.c
b/firmware/libcommon/source/mode_cardemu.c
index ff76863..edd500f 100644
--- a/firmware/libcommon/source/mode_cardemu.c
+++ b/firmware/libcommon/source/mode_cardemu.c
@@ -168,6 +168,16 @@
#endif
}
+int card_emu_get_vcc(uint8_t uart_chan)
+{
+ struct cardem_inst *ci = &cardem_inst[uart_chan];
+#ifdef DETECT_VCC_BY_ADC
+ return ci->vcc_uv / 1000;
+#else
+ return -1;
+#endif
+}
+
/* call-back from card_emu.c to enable/disable transmit and/or receive */
void card_emu_uart_enable(uint8_t uart_chan, uint8_t rxtx)
{
--
To view, visit
https://gerrit.osmocom.org/c/simtrace2/+/26996
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: simtrace2
Gerrit-Branch: master
Gerrit-Change-Id: Idcecad553fb36380e916378e1420488acbbfa8e3
Gerrit-Change-Number: 26996
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: newchange