FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/bsp/sim32.c @ 462:6500e1817d9b
doc/Roadmap: written
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Mon, 23 Jun 2014 20:39:36 +0000 | 
| parents | 5e0e41cd7c9f | 
| children | 1199cdf99c32 | 
| rev | line source | 
|---|---|
| 163 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1 /* | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 2 * SIM32.C | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 3 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 4 * Pole Star SIM | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 5 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 6 * Target : ARM | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 7 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 8 * Copyright (c) Texas Instruments 1995 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 9 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 10 */ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 11 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 12 #define SIM32_C 1 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 13 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 14 #include "chipset.cfg" | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 15 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 16 #include "main/sys_types.h" | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 17 #include <assert.h> | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 18 #include "inth/iq.h" | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 19 #include "sim.h" | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 20 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 21 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 22 #ifdef SIM_DEBUG_TRACE | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 23 /* working buffer for NULL BYTE */ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 24 extern SYS_UWORD8 SIM_dbg_null[]; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 25 /* Nucleus variable given the current number of TDMA frames */ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 26 extern SYS_UWORD32 IQ_FrameCount; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 27 /* working variable to calculate the TDMA ecart */ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 28 extern SYS_UWORD16 SIM_dbg_tdma_diff; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 29 /* working variable storing the current number of TDMA frames elapsed */ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 30 SYS_UWORD32 SIM_dbg_local_count; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 31 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 32 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 33 /* | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 34 * SIM_IntHandler | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 35 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 36 * Read cause of SIM interrupt : | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 37 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 38 * if receive buffer full, read char | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 39 * if transmitter empty, change direction, transmit a dummy char | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 40 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 41 */ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 42 void SIM_IntHandler(void) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 43 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 44 volatile unsigned short it, i, stat, conf1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 45 volatile SYS_UWORD8 ins; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 46 volatile SYS_UWORD8 rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 47 volatile SYS_UWORD8 nack; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 48 volatile SYS_UWORD8 nack1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 49 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 50 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 51 SIM_PORT *p; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 52 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 53 p = &(Sim[0]); | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 54 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 55 p->rxParityErr = 0; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 56 it = p->c->it; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 57 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 58 if ((it & SIM_IT_ITRX) && !(p->c->maskit & SIM_MASK_RX)) // int on reception | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 59 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 60 stat = p->c->rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 61 conf1 = p->conf1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 62 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 63 #ifdef SIM_DEBUG_TRACE | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 64 if ((IQ_FrameCount - SIM_dbg_local_count) > SIM_dbg_tdma_diff) { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 65 SIM_dbg_tdma_diff = IQ_FrameCount - SIM_dbg_local_count; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 66 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 67 SIM_dbg_local_count = IQ_FrameCount; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 68 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 69 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 70 // Check if reception parity is enable | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 71 if (((conf1 & SIM_CONF1_CHKPAR) && ((stat & SIM_DRX_STATRXPAR) != 0))\ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 72 || ((conf1 & SIM_CONF1_CHKPAR) == 0)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 73 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 74 rx = (SYS_UWORD8) (stat & 0x00FF); | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 75 ins = p->xbuf[1] & p->hw_mask; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 76 nack = (~p->xbuf[1]) & p->hw_mask; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 77 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 78 switch (p->moderx) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 79 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 80 case 0: //mode of normal reception without proc char (like PTS proc) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 81 p->rbuf[p->rx_index++] = rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 82 break; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 83 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 84 case 1: //mode wait for ACK | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 85 if ((rx & p->hw_mask) == ins) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 86 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 87 p->moderx = 2; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 88 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 89 else if ((rx & p->hw_mask) == nack) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 90 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 91 p->moderx = 4; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 92 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 93 else if (((rx & 0xF0) == 0x60) || ((rx & 0xF0) == 0x90)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 94 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 95 if (rx != 0x60) //in case of error code (SW1/SW2) returned by sim card | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 96 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 97 p->rSW12[p->SWcount++] = rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 98 p->moderx = 5; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 99 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 100 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 101 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 102 p->null_received = 1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 103 #ifdef SIM_DEBUG_TRACE | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 104 SIM_dbg_null[0]++; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 105 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 106 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 107 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 108 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 109 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 110 p->errorSIM = SIM_ERR_ABNORMAL_CASE2; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 111 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 112 //if rx = 0x60 wait for ACK | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 113 break; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 114 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 115 case 2: //mode reception by block | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 116 p->rbuf[p->rx_index++] = rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 117 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 118 if(p->expected_data == 256) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 119 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 120 if (p->rx_index == 0) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 121 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 122 p->moderx = 5; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 123 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 124 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 125 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 126 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 127 if (p->rx_index == p->expected_data) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 128 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 129 p->moderx = 5; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 130 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 131 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 132 break; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 133 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 134 case 3: //mode reception char by char. reception of proc char | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 135 if ((rx & p->hw_mask) == ins) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 136 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 137 p->moderx = 2; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 138 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 139 else if ((rx & p->hw_mask) == nack) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 140 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 141 p->moderx = 4; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 142 } //if rx = 0x60 wait for ACK | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 143 else if (rx == 0x60) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 144 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 145 p->null_received == 1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 146 #ifdef SIM_DEBUG_TRACE | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 147 SIM_dbg_null[1]++; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 148 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 149 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 150 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 151 break; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 152 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 153 case 4: //mode reception char by char. reception of data | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 154 p->rbuf[p->rx_index++] = rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 155 p->moderx = 3; //switch to receive proc char mode | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 156 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 157 if(p->expected_data == 256) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 158 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 159 if (p->rx_index == 0) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 160 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 161 p->moderx = 5; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 162 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 163 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 164 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 165 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 166 if (p->rx_index == p->expected_data) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 167 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 168 p->moderx = 5; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 169 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 170 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 171 break; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 172 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 173 case 5: //mode wait for procedure character except NULL | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 174 if ((rx != 0x60) || (p->SWcount != 0)) //treat NULL character only if arriving before SW1 SW2 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 175 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 176 p->rSW12[p->SWcount++] = rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 177 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 178 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 179 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 180 p->null_received = 1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 181 #ifdef SIM_DEBUG_TRACE | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 182 SIM_dbg_null[2]++; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 183 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 184 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 185 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 186 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 187 break; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 188 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 189 case 6: //give the acknowledge char | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 190 if (((rx & 0xF0) == 0x60) || ((rx & 0xF0) == 0x90)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 191 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 192 if (rx != 0x60) //in case of error code (SW1/SW2) returned by sim card | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 193 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 194 p->rSW12[p->SWcount++] = rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 195 p->moderx = 5; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 196 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 197 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 198 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 199 p->null_received = 1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 200 #ifdef SIM_DEBUG_TRACE | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 201 SIM_dbg_null[3]++; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 202 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 203 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 204 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 205 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 206 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 207 p->ack = rx; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 208 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 209 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 210 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 211 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 212 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 213 p->rxParityErr = 1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 214 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 215 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 216 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 217 if ((it & SIM_IT_ITTX) && !(p->c->maskit & SIM_MASK_TX)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 218 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 219 #ifdef SIM_DEBUG_TRACE | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 220 SIM_dbg_local_count = IQ_FrameCount; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 221 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 222 // check the transmit parity | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 223 stat = p->c->stat; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 224 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 225 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 226 if ((stat & SIM_STAT_TXPAR) || ((p->conf1 & SIM_CONF1_CHKPAR) == 0)) //parity disable | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 227 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 228 if (p->xOut != (p->xIn - 1)) //if only one char transmitted (already transmitted) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 229 { //just need to have confirmation of reception | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 230 if (p->xOut == (p->xIn - 2)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 231 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 232 p->xOut++; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 233 p->c->tx = *(p->xOut); // transmit | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 234 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 235 p->conf1 &= ~SIM_CONF1_TXRX; // return the direction | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 236 p->c->conf1 = p->conf1; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 237 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 238 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 239 if (p->xOut < (p->xIn - 2)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 240 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 241 p->xOut++; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 242 p->c->tx = *(p->xOut); // transmit | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 243 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 244 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 245 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 246 else | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 247 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 248 p->c->tx = *(p->xOut); // transmit same char | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 249 p->txParityErr++; // count number of transmit parity errors | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 250 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 251 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 252 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 253 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 254 // Handle errors | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 255 if ((it & SIM_IT_ITOV) && !(p->c->maskit & SIM_MASK_OV)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 256 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 257 p->errorSIM = SIM_ERR_OVF; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 258 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 259 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 260 if ((it & SIM_IT_WT) && !(p->c->maskit & SIM_MASK_WT)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 261 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 262 p->errorSIM = SIM_ERR_READ; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 263 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 264 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 265 // Reset the card in case of NATR to let the program continue | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 266 if ((it & SIM_IT_NATR) && !(p->c->maskit & SIM_MASK_NATR)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 267 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 268 p->c->cmd = SIM_CMD_STOP; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 269 p->errorSIM = SIM_ERR_NATR; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 270 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 271 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 272 #if ((CHIPSET == 2) || (CHIPSET == 3)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 273 // SIM card insertion / extraction | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 274 if ((it & SIM_IT_CD) && !(p->c->maskit & SIM_MASK_CD)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 275 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 276 stat = p->c->stat; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 277 if ((stat & SIM_STAT_CD) != SIM_STAT_CD) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 278 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 279 (p->RemoveFunc)(); | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 280 p->errorSIM = SIM_ERR_NOCARD; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 281 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 282 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 283 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 284 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 285 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 286 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 287 /* | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 288 * SIM_CD_IntHandler | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 289 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 290 * Read cause of SIM interrupt : | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 291 * | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 292 */ | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 293 void SIM_CD_IntHandler(void) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 294 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 295 volatile unsigned short it_cd, stat; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 296 SIM_PORT *p; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 297 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 298 p = &(Sim[0]); | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 299 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 300 p->rxParityErr = 0; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 301 it_cd = p->c->it_cd; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 302 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 303 // SIM card insertion / extraction | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 304 if ((it_cd & SIM_IT_CD) && !(p->c->maskit & SIM_MASK_CD)) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 305 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 306 stat = p->c->stat; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 307 if ((stat & SIM_STAT_CD) != SIM_STAT_CD) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 308 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 309 (p->RemoveFunc)(); | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 310 p->errorSIM = SIM_ERR_NOCARD; | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 311 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 312 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 313 } | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 314 #endif | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 315 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 316 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 317 // to force this module to be linked | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 318 SYS_UWORD16 SIM_Dummy(void) | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 319 { | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 320 | 
| 
5e0e41cd7c9f
gsm-fw/bsp/sim*.c: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 321 } | 
