From d8585a8e9b0c3b144d65fc899825121d289a1794 Mon Sep 17 00:00:00 2001
From: Kevin Redon <kevredon@mail.tsaitgaist.info>
Date: Sun, 16 Sep 2012 18:40:02 +0200
Subject: [PATCH] replaced function/structure comments with doxygen comments

affected files: sim.h, sim/core.c
affected funtions/strucutres: osim_new_apdumsg, osim_apdu_case,osim_apdu_cmd_hdr, osim_msgb_cb
---
 include/osmocom/sim/sim.h |   58 ++++++++++++++++++++++++++++++---------------
 src/sim/core.c            |   20 +++++++++-------
 2 files changed, 51 insertions(+), 27 deletions(-)

diff --git a/include/osmocom/sim/sim.h b/include/osmocom/sim/sim.h
index e415843..6ead7ff 100644
--- a/include/osmocom/sim/sim.h
+++ b/include/osmocom/sim/sim.h
@@ -6,34 +6,54 @@
 
 #define APDU_HDR_LEN	5
 
-/* command-response pairs cases, as specified in ISO/IEC 7816-3:2006(E) §12.1 */
+/*!
+ * \file sim.h
+ * \brief Routines for helping with SIM (ISO/IEC 7816-4 more generally) communication.
+ */
+
+/*! \brief command-response pairs cases
+ *
+ * Enumeration used to identify the APDU structure based on command-response pair case , as specified in ISO/IEC 7816-3:2006(E) §12.1.
+ */
 enum osim_apdu_case {
-	APDU_CASE_1, /* command header, no command data field, no response data field */
-	APDU_CASE_2S, /* command header, no command data field, response data field (short) */
-	APDU_CASE_2E, /* command header, no command data field, response data field (extended) */
-	APDU_CASE_3S, /* command header, command data field (short), no response data field */
-	APDU_CASE_3E, /* command header, command data field (extended), no response data field */
-	APDU_CASE_4S, /* command header, command data field (short), response data field (short) */
-	APDU_CASE_4E /* command header, command data field (extended), response data field (extended) */
+	APDU_CASE_1, /*!< command header, no command data field, no response data field */
+	APDU_CASE_2S, /*!< command header, no command data field, response data field (short) */
+	APDU_CASE_2E, /*!< command header, no command data field, response data field (extended) */
+	APDU_CASE_3S, /*!< command header, command data field (short), no response data field */
+	APDU_CASE_3E, /*!< command header, command data field (extended), no response data field */
+	APDU_CASE_4S, /*!< command header, command data field (short), response data field (short) */
+	APDU_CASE_4E /*!< command header, command data field (extended), response data field (extended) */
 };
 
-/* command header, as specified in ISO/IEC 7816-3:2006(E) §12.2 */
+/*! \brief APDU/TPDU command header
+ *
+ * This structure encode an APDU/TPDU command header, as specified in ISO/IEC 7816-3:2006(E) §12.2 and §12.3.
+ * The APDU (application layer) can be encoded as different TPDUs (transport layer), depending on the transport protocol used.
+ * The TPDU encoding by T=1 of the APDU command header is identical to the APDU.
+ * The TPDU encoding by T=0 of the APDU command header adds a Parameter 3 field, generally used instead of Lc/Le.
+ * 
+ * @todo have different structures for APDU, TPDU by T=0, and TPDU by T=1.
+ */
 struct osim_apdu_cmd_hdr {
-	uint8_t cla; /* CLASS byte */
-	uint8_t ins; /* INSTRUCTION byte */
-	uint8_t p1; /* Parameter 1 byte */
-	uint8_t p2; /* Parameter 2 byte */
-	uint8_t p3; /* Parameter 3 byte, used for TPDU */
+	uint8_t cla; /*!< CLASS byte */
+	uint8_t ins; /*!< INSTRUCTION byte */
+	uint8_t p1; /*!< Parameter 1 byte */
+	uint8_t p2; /*!< Parameter 2 byte */
+	uint8_t p3; /*!< Parameter 3 byte, used for TPDU by T=0 */
 } __attribute__ ((packed));
 
 #define msgb_apdu_dr(__x)
 
-/* command body, as specified in ISO/IEC 7816-3:2006(E) §12.1 */
+/*! \brief APDU command body
+ *
+ * This structure encode a command body, as specified in ISO/IEC 7816-3:2006(E) §12.1.
+ * The data and response contents should be provided along with this structure.
+ */
 struct osim_msgb_cb {
-	enum osim_apdu_case apduc; /* command-response pairs case, defining the encoding of Lc and Le */
-	uint16_t lc; /* number of bytes in the command data field Nc, which will encoded in 0, 1 or 3 bytes into Lc */
-	uint16_t le; /* maximum number of bytes expected in the response data field,  which will encoded in 0, 1, 2 or 3 bytes into Le */
-	uint16_t sw; /* status word, composed of SW1 and SW2 bytes */
+	enum osim_apdu_case apduc; /*!< command-response pair case, defining the encoding of Lc and Le */
+	uint16_t lc; /*!< number of bytes in the command data field Nc, which will encoded in 0, 1 or 3 bytes into Lc, depending on the case */
+	uint16_t le; /*!< maximum number of bytes expected in the response data field,  which will encoded in 0, 1, 2 or 3 bytes into Le, depending on the case */
+	uint16_t sw; /*!< status word, composed of SW1 and SW2 bytes */
 };
 #define OSIM_MSGB_CB(__msgb)	((struct osim_msgb_cb *)&((__msgb)->cb[0]))
 /*! \brief status word from msgb->cb */
diff --git a/src/sim/core.c b/src/sim/core.c
index 9c1c9ae..cbbb9f8 100644
--- a/src/sim/core.c
+++ b/src/sim/core.c
@@ -174,14 +174,18 @@ osim_file_find_name(struct osim_file_desc *parent, const char *name)
 	return NULL;
 }
 
-/* create an APDU header
- * APDU format as defined in ISO/IEC 7816-4:2005(E) §5.1
- * - cla: CLASS byte
- * - ins: INSTRUCTION byte
- * - p1: Parameter 1 byte
- * - p2: Parameter 2 byte
- * - lc: number of bytes in the command data field Nc, which will encoded in 0, 1 or 3 bytes into Lc
- * - le: maximum number of bytes expected in the response data field,  which will encoded in 0, 1, 2 or 3 bytes into Le
+/*! \brief Generate an APDU message and initialize APDU command header
+ *  \param[in] cla CLASS byte
+ *  \param[in] ins INSTRUCTION byte
+ *  \param[in] p1 Parameter 1 byte
+ *  \param[in] p2 Parameter 2 byte
+ *  \param[in] lc number of bytes in the command data field Nc, which will encoded in 0, 1 or 3 bytes into Lc
+ *  \param[in] le maximum number of bytes expected in the response data field,  which will encoded in 0, 1, 2 or 3 bytes into Le
+ *  \returns an APDU message generated using provided APDU parameters
+ * 
+ * This function generates an APDU message, as defined in ISO/IEC 7816-4:2005(E) §5.1.
+ * The APDU command header, command and response fields lengths are initialized using the parameters.
+ * The APDU case is determined by the command and response fields lengths.
  */
 struct msgb *osim_new_apdumsg(uint8_t cla, uint8_t ins, uint8_t p1,
 			      uint8_t p2, uint16_t lc, uint16_t le)
-- 
1.7.9.5

