This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Kévin Redon gerrit-no-reply at lists.osmocom.orgKévin Redon has uploaded this change for review. ( https://gerrit.osmocom.org/9853
Change subject: ISO7816: change update_fidi to use provided USART, and disable write protection for USART register if required
......................................................................
ISO7816: change update_fidi to use provided USART, and disable write protection for USART register if required
Change-Id: I716f4bc3a22800cbce402b146f14ef8b2aab2a98
---
M firmware/libcommon/include/simtrace.h
M firmware/libcommon/source/simtrace_iso7816.c
2 files changed, 23 insertions(+), 12 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/53/9853/1
diff --git a/firmware/libcommon/include/simtrace.h b/firmware/libcommon/include/simtrace.h
index 278d5d2..3dfefe4 100644
--- a/firmware/libcommon/include/simtrace.h
+++ b/firmware/libcommon/include/simtrace.h
@@ -77,7 +77,11 @@
extern const USBConfigurationDescriptor *configurationDescriptorsArr[];
-void update_fidi(uint8_t fidi);
+/*! Update USART baud rate to Fi/Di ratio
+ * @param[io] usart USART peripheral base address
+ * @param[in] fidi FiDi value as provided in TA interface byte
+ */
+void update_fidi(Usart *usart, uint8_t fidi);
void ISR_PhoneRST( const Pin *pPin);
diff --git a/firmware/libcommon/source/simtrace_iso7816.c b/firmware/libcommon/source/simtrace_iso7816.c
index 81ae980..3d843a7 100644
--- a/firmware/libcommon/source/simtrace_iso7816.c
+++ b/firmware/libcommon/source/simtrace_iso7816.c
@@ -116,20 +116,27 @@
}
/* FIDI update functions */
-void update_fidi(uint8_t fidi)
+void update_fidi(Usart *usart, uint8_t fidi)
{
- int rc;
+ if (NULL==usart) {
+ return;
+ }
uint8_t fi = fidi >> 4;
uint8_t di = fidi & 0xf;
+ int ratio = compute_fidi_ratio(fi, di);
- rc = compute_fidi_ratio(fi, di);
- if (rc > 0 && rc < 0x400) {
- TRACE_INFO("computed Fi(%u) Di(%u) ratio: %d", fi, di, rc);
- /* make sure UART uses new F/D ratio */
- USART_PHONE->US_CR |= US_CR_RXDIS | US_CR_RSTRX;
- USART_PHONE->US_FIDI = rc & 0x3ff;
- USART_PHONE->US_CR |= US_CR_RXEN | US_CR_STTTO;
- } else
- TRACE_INFO("computed FiDi ratio %d unsupported", rc);
+ if (ratio > 0 && ratio < 0x8000) {
+ /* make sure USART uses new F/D ratio */
+ usart->US_CR |= US_CR_RXDIS | US_CR_RSTRX;
+ /* disable write protection */
+ if (usart->US_WPMR) {
+ usart->US_WPMR = US_WPMR_WPKEY(0x555341);
+ }
+ usart->US_FIDI = (ratio & 0x7ff);
+ usart->US_CR |= US_CR_RXEN | US_CR_STTTO;
+ TRACE_INFO("updated USART Fi(%u)/Di(%u) ratio(%d): %u\n\r", fi, di, ratio, usart->US_FIDI);
+ } else {
+ TRACE_WARNING("computed Fi/Di ratio %d unsupported\n\r", ratio);
+ }
}
--
To view, visit https://gerrit.osmocom.org/9853
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: simtrace2
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I716f4bc3a22800cbce402b146f14ef8b2aab2a98
Gerrit-Change-Number: 9853
Gerrit-PatchSet: 1
Gerrit-Owner: Kévin Redon <kredon at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180703/b992a60a/attachment.htm>