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 <[email protected]>
Gerrit-MessageType: newchange

Reply via email to