Change in simtrace2[master]: ISO7816: change update_fidi to use provided USART, and disable write ...

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.org
Tue Jul 3 16:45:26 UTC 2018


Ké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>


More information about the gerrit-log mailing list