annotate src/gpf2/tst/drv/usart.c @ 551:0d042f1f87b4

blobs/obj/osl: import of discrete OSL objects from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 18 Nov 2018 23:23:08 +0000
parents cd37d228dae0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
294
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 +------------------------------------------------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 | File: usart.c
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 +------------------------------------------------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 | Copyright 2002 Texas Instruments Berlin, AG
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 | All rights reserved.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 | This file is confidential and a trade secret of Texas
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 | Instruments Berlin, AG
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 | The receipt of or possession of this file does not convey
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 | any rights to reproduce or disclose its contents or to
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 | manufacture, use, or sell anything it may describe, in
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 | whole, or in part, without the specific written consent of
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 | Texas Instruments Berlin, AG.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 +-----------------------------------------------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 | Purpose : This Modul defines functions for actual or simulated
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 | USART comunication between two PS-Frames.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 | Use US_set_mode() to select actual USART under windows95 or
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 | under windowsNT, or to select simulated USART under win95/NT
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 +-----------------------------------------------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 #ifndef __USART_C__
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 #define __USART_C__
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 /*==== INCLUDES ===================================================*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 #include <windows.h>
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 #ifndef _VXWORKS_
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 #include <stdarg.h>
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 #include <stdio.h>
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 #include "typedefs.h"
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 #include "usart.h"
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 #include "printtofile.h"
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 /*==== CONSTANTS ==================================================*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 #define COM_ERROR (CE_FRAME | CE_IOE | CE_OVERRUN)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 #define XON 0x11
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 #define XOFF 0x13
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 #define READER_THREAD_EXIT_CODE 4711
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 #define USART_BUFFER_SIZE 0x10000 /* 65536 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 #define FILE_MAX_CHUNK 0x0ffff
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 #define FILE_SLOW_DOWN 0x01
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 #ifdef _TOOLS_
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 #define USART_SEND_TIMEOUT 60000
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 #define USART_RCV_TIMEOUT 120000
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 #else /* _TOOLS_ */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 #define USART_SEND_TIMEOUT INFINITE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 #define USART_RCV_TIMEOUT INFINITE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 #endif /* _TOOLS_ */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 /*==== TYPES ======================================================*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 typedef struct
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 UBYTE Connects;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 UBYTE Type;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 USHORT CH1_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 USHORT CH2_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 UBYTE CH1_CTS;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 UBYTE CH2_CTS;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 UBYTE CH1_data[USART_BUFFER_SIZE];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 UBYTE CH2_data[USART_BUFFER_SIZE];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 } T_USARTStream;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 /*==== EXPORT =====================================================*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 /*==== PRIVATE ====================================================*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 /*==== VARIABLES ==================================================*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 static int m_mode=UT_MODE_NT;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 static long int m_send_timeout=(long int)USART_SEND_TIMEOUT;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 static long int m_rcv_timeout =(long int)USART_RCV_TIMEOUT;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 static int first_ut_init = 1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 static FILE* m_file=NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 static OVERLAPPED gWriteOverLap;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 static OVERLAPPED gReadOverLap;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 static int ReaderThreadExitRequest = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 LOCAL void (*ReceiveCallback)(void) = NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 static int initialized = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 #ifdef COM_AUTOSEARCH
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 static int P = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 static int usart_in, usart_out;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 T_USARTStream *Stream;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 HANDLE SemCH1_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 HANDLE SemCH2_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 HANDLE SemCH1_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 HANDLE SemCH2_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 HANDLE USARTMemHandle;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 HANDLE *semRCVFull=0, *semRCVEmpty=0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 HANDLE *semSNDFull=0, *semSNDEmpty=0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 HANDLE ut_sema_handle;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 UBYTE *InBuffer, *OutBuffer, *readPointer;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 USHORT *InCounter, *OutCounter;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 UBYTE *CTS = NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 static HANDLE hComDev = INVALID_HANDLE_VALUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 static HANDLE hThread = INVALID_HANDLE_VALUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 static int mem_closed = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 static int cls_cnt = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 static int snd_cnt = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 /*==== FUNCTIONS ==================================================*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 | STATE : code ROUTINE : US_set_mode |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 PURPOSE : With this function you can select the UART mode
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 #define US_MODE_95 1
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 #define US_MODE_NT 2
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 #define US_MODE_SIM 3
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 #define US_MODE_FILE 4
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 void US_set_mode(int mode)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 m_mode=mode;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 | STATE : code ROUTINE : US_set_mode |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 PURPOSE : With this function get the seleced UART mode
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 #define US_MODE_95 1
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 #define US_MODE_NT 2
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 #define US_MODE_SIM 3
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 #define US_MODE_FILE 4
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 int US_get_mode()
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 return m_mode;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 | PROJECT : GSM-PS (6147) MODULE : USARTSIM |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 | STATE : code ROUTINE : unlockUSARTMemory |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 PURPOSE : unlocks the previously locked shared memory area.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 LOCAL void markRCVBufferEmpty (void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 ReleaseSemaphore (*semRCVEmpty,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 LOCAL void markSNDBufferFull (void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 ReleaseSemaphore (*semSNDFull,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 | PROJECT : GSM-PS (6147) MODULE : USARTSIM |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 | STATE : code ROUTINE : waitForSNDBufferEmpty |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 PURPOSE : waits for send buffer becoming empty
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 RETURNS : 0 .. send buffer is empty
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 -1 .. given up
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 LOCAL int waitForSNDBufferEmpty (void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 if (WaitForSingleObject (*semSNDEmpty, m_send_timeout) NEQ WAIT_OBJECT_0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 int err = GetLastError();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 PrintToFile("USART: error code %d\n", err);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 PrintToFile("USART: giving up sending with %d ms timeout :-(\n", m_send_timeout);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 return -1; /* give up */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 return 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 | PROJECT : GSM-PS (6147) MODULE : USARTSIM |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 | STATE : code ROUTINE : createUSARTMemory |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 PURPOSE : Create two pipes for byte oriented data exchange
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 between two win32 processes
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 LOCAL void *createUSARTMemory (char *name, ULONG size)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 char newname[40];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 * create two Semaphores pairs to protect the send data to be
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 * overwritten before they have read by the receiver
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 sprintf (newname, "%s_CH1empty", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 SemCH1_empty = CreateSemaphore (NULL,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 if (SemCH1_empty EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236 sprintf (newname, "%s_CH1full", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 SemCH1_full = CreateSemaphore (NULL,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 if (SemCH1_full EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 sprintf (newname, "%s_CH2empty", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 SemCH2_empty = CreateSemaphore (NULL,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 if (SemCH2_empty EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 sprintf (newname, "%s_CH2full", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 SemCH2_full = CreateSemaphore (NULL,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 1,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263 if (SemCH2_full EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
265
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 * create a shared memory area
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 sprintf (newname, "UT_Mem_%s", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 USARTMemHandle
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 = CreateFileMapping (
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 (HANDLE) 0xffffffff, /* memory-mapped */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 NULL, /* no security */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 PAGE_READWRITE, /* read/write access */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 (DWORD) 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 /* memory size */ (DWORD) size,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 newname /* name of sh. mem */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281 if (USARTMemHandle EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
285 * map the shared memory area into the address space of the process
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
286 * and return the startaddress.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
289 return MapViewOfFile (USARTMemHandle,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 FILE_MAP_WRITE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
291 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
292 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
293 0);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
294 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
295
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
296
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
297 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
298 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
299 | PROJECT : GSM-PS (6147) MODULE : USARTSIM |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
300 | STATE : code ROUTINE : openUSARTMemory |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
302
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
303 PURPOSE : open a shared memory area for character exchange
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
304 between two WIN32 processes
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
305
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
306 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
307
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
308 LOCAL void *openUSARTMemory (char *name, ULONG size)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
309 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
310 char newname[30];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
311
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
312 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
313 * open the Semaphores
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
314 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
315
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
316 sprintf (newname, "%s_CH1empty", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
317
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
318 SemCH1_empty = OpenSemaphore (SEMAPHORE_MODIFY_STATE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
319 | SYNCHRONIZE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
320 FALSE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
321 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
322
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
323 if (SemCH1_empty EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
324 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
325
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
326 sprintf (newname, "%s_CH1full", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
327
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
328 SemCH1_full = OpenSemaphore (SEMAPHORE_MODIFY_STATE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
329 | SYNCHRONIZE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
330 FALSE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
331 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
332
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
333 if (SemCH1_full EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
334 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
335
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
336 sprintf (newname, "%s_CH2empty", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
337
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
338 SemCH2_empty = OpenSemaphore (SEMAPHORE_MODIFY_STATE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
339 | SYNCHRONIZE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
340 FALSE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
341 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
342
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
343 if (SemCH2_empty EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
344 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
345
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
346 sprintf (newname, "%s_CH2full", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
347
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
348 SemCH2_full = OpenSemaphore (SEMAPHORE_MODIFY_STATE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
349 | SYNCHRONIZE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
350 FALSE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
351 newname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
352
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
353 if (SemCH2_full EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
354 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
355
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
356 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
357 * open the shared memory area
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
358 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
359
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
360 sprintf (newname, "UT_Mem_%s", name);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
361
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
362 USARTMemHandle =
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
363 OpenFileMapping (FILE_MAP_WRITE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
364 FALSE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
365 newname); /* name of sh. mem */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
366
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
367
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
368 if (USARTMemHandle EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
369 return NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
370
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
371 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
372 * map the shared memory area into the address space of the process
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
373 * and return the startaddress.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
374 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
375
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
376 return MapViewOfFile (USARTMemHandle,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
377 FILE_MAP_WRITE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
378 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
379 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
380 0);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
381 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
382
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
383
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
384 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
385 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
386 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
387 | STATE : code ROUTINE : waitForRCVBufferFull |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
388 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
389
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
390 PURPOSE : This function waits until an incoming character
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
391 is signaled with the EV_RXCHAR Event
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
392
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
393 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
394
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
395 LOCAL void waitForRCVBufferFull (void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
396 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
397 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
398 case US_MODE_95: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
399 static COMSTAT stComStat;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
400 static DWORD dwErrors;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
401 static DWORD EvtMask = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
402 BOOL validReceive = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
403
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
404 do
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
405 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
406 SetCommMask (hComDev, EV_RXCHAR) ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
407 WaitCommEvent (hComDev, &EvtMask, NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
408 ClearCommError (hComDev, &dwErrors, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
409
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
410 if (dwErrors & COM_ERROR)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
411 PurgeComm (hComDev, PURGE_RXCLEAR|PURGE_RXABORT);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
412 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
413 validReceive = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
414
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
415 } while (!validReceive);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
416 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
417 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
418 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
419 static COMSTAT stComStat;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
420 static DWORD dwErrors;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
421 static DWORD EvtMask = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
422 BOOL validReceive = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
423
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
424 do
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
425 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
426 SetCommMask (hComDev, EV_RXCHAR) ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
427 WaitCommEvent (hComDev, &EvtMask, NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
428 ClearCommError (hComDev, &dwErrors, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
429
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
430 if (dwErrors & COM_ERROR)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
431 PurgeComm (hComDev, PURGE_RXCLEAR|PURGE_RXABORT);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
432 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
433 validReceive = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
434
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
435 } while (!validReceive && !ReaderThreadExitRequest);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
436 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
437 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
438 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
439 if (WaitForSingleObject (*semRCVFull, m_rcv_timeout) NEQ WAIT_OBJECT_0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
440 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
441 PrintToFile("USART: no stack connected\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
442 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
443 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
444 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
445 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
446 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
447 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
448 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
449
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
450
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
451 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
452 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
453 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
454 | STATE : code ROUTINE : _readerThread |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
455 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
456
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
457 PURPOSE : This function is the central signal handling function. It is
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
458 installed as a thread and waits for the occurance of an
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
459 event and then calls the installed callback function
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
460 of the application.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
461
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
462 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
463
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
464 LOCAL void _readerThread (void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
465 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
466 while (ReaderThreadExitRequest == FALSE)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
467 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
468 waitForRCVBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
469 ReceiveCallback ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
470 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
471 ReaderThreadExitRequest = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
472 ExitThread(READER_THREAD_EXIT_CODE);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
473 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
474
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
475 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
476 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
477 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
478 | STATE : code ROUTINE : convertBaudrate |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
479 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
480
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
481 PURPOSE : This function convert the constants for the baudrates in
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
482 usart.h into the equvalent constants for WIN32 comm.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
483
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
484 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
485 LOCAL DWORD convertBaudrate (DWORD br)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
486 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
487 switch (br)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
488 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
489 case US_BAUD_256000:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
490 return CBR_256000;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
491
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
492 case US_BAUD_128000:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
493 return CBR_128000;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
494
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
495 case US_BAUD_115200:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
496 return CBR_115200;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
497
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
498 case US_BAUD_57600:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
499 return CBR_57600;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
500
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
501 case US_BAUD_38400:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
502 return CBR_38400;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
503
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
504 case US_BAUD_19200:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
505 return CBR_19200;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
506
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
507 case US_BAUD_14400:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
508 return CBR_14400;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
509
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
510 case US_BAUD_9600:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
511 return CBR_9600;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
512
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
513 case US_BAUD_4800:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
514 return CBR_4800;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
515
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
516 case US_BAUD_2400:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
517 return CBR_2400;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
518
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
519 case US_BAUD_1200:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
520 return CBR_1200;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
521
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
522 case US_BAUD_600:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
523 return CBR_600;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
524
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
525 case US_BAUD_300:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
526 return CBR_300;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
527
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
528 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
529 /* no CBR_xxx constant found -> return value itsself */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
530 return br;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
531 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
532 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
533
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
534 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
535 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
536 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
537 | STATE : code ROUTINE : sioInit |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
538 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
539
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
540 PURPOSE : This function opens the given comm port and initiializes
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
541 the DCB with baudrate and flowcontrol parameters.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
542
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
543 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
544
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
545 LOCAL BOOL sioInit (int portNr,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
546 unsigned int baudrate,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
547 unsigned int bufSize,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
548 char flowCtrl)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
549 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
550 char szPort[10];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
551 DCB stDCB;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
552 COMMTIMEOUTS stTimeout ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
553 DWORD dwErrorFlags;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
554 COMSTAT stComStat;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
555
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
556 sprintf (szPort, "\\\\.\\COM%d", portNr) ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
557
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
558 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
559 // open the communication device
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
560 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
561 if (m_mode==UT_MODE_NT) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
562 hComDev = CreateFile
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
563 (
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
564 szPort,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
565 GENERIC_READ | GENERIC_WRITE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
566 0, /* exclusive access */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
567 NULL, /* no security attrs */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
568 OPEN_EXISTING,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
569 FILE_FLAG_OVERLAPPED,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
570 NULL
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
571 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
572 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
573 hComDev = CreateFile
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
574 (
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
575 szPort,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
576 GENERIC_READ | GENERIC_WRITE,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
577 0, // exclusive access
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
578 NULL, // no security attrs
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
579 OPEN_EXISTING,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
580 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
581 NULL
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
582 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
583 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
584
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
585 if (hComDev EQ INVALID_HANDLE_VALUE)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
586 return FALSE; // device not available
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
587
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
588 if (m_mode==UT_MODE_NT) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
589 gReadOverLap.hEvent = CreateEvent (NULL, TRUE, FALSE, NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
590 if (!gReadOverLap.hEvent)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
591 return ( FALSE );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
592
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
593 gReadOverLap.Offset = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
594 gReadOverLap.OffsetHigh = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
595
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
596 gWriteOverLap.hEvent = CreateEvent (NULL, TRUE, FALSE, NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
597 if (!(gWriteOverLap.hEvent))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
598 return ( FALSE );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
599
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
600 gWriteOverLap.Offset = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
601 gWriteOverLap.OffsetHigh = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
602 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
603
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
604 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
605 // get any early notifications
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
606 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
607 SetCommMask (hComDev, EV_RXCHAR);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
608
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
609 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
610 // setup device buffers
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
611 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
612 SetupComm (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
613 bufSize,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
614 bufSize
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
615 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
616
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
617 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
618 // purge any information in the buffer
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
619 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
620 PurgeComm (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
621 PURGE_TXABORT | PURGE_RXABORT |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
622 PURGE_TXCLEAR | PURGE_RXCLEAR
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
623 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
624
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
625 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
626 // setup up and enable communication
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
627 // device. If not possible close
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
628 // communication and abort function.
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
629 // ------------------------------------
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
630 if (!GetCommState (hComDev, &stDCB))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
631 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
632 SetCommMask (hComDev, 0);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
633 CloseHandle (hComDev);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
634 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
635 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
636
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
637 stDCB.DCBlength = sizeof (stDCB); // sizeof(DCB)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
638
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
639 switch (flowCtrl)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
640 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
641 case 'N':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
642 stDCB.fOutxCtsFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
643 stDCB.fOutxDsrFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
644 stDCB.fDtrControl = DTR_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
645 stDCB.fRtsControl = RTS_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
646 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
647 case 'D':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
648 stDCB.fOutxCtsFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
649 stDCB.fOutxDsrFlow = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
650 stDCB.fDtrControl = DTR_CONTROL_HANDSHAKE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
651 stDCB.fRtsControl = RTS_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
652 stDCB.XonLim = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
653 stDCB.XoffLim = 50;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
654 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
655 case 'R':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
656 stDCB.fOutxCtsFlow = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
657 stDCB.fOutxDsrFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
658 stDCB.fDtrControl = DTR_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
659 stDCB.fRtsControl = RTS_CONTROL_HANDSHAKE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
660 stDCB.XonLim = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
661 stDCB.XoffLim = 50;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
662 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
663 case 'P':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
664 stDCB.fOutxCtsFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
665 stDCB.fOutxDsrFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
666 stDCB.fDtrControl = DTR_CONTROL_ENABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
667 stDCB.fRtsControl = RTS_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
668 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
669 case 'V':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
670 if (m_mode==US_MODE_NT) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
671 stDCB.fOutxCtsFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
672 stDCB.fOutxDsrFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
673 stDCB.fDtrControl = DTR_CONTROL_ENABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
674 stDCB.fRtsControl = RTS_CONTROL_ENABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
675 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
676 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
677 /*lint -fallthrough*/
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
678 /* go on if not US_MODE_NT */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
679 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
680 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
681 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
682 fprintf (stdout,"flow control: %c ...", flowCtrl);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
683
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
684 stDCB.BaudRate = baudrate; // current baud rate
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
685 stDCB.fBinary = TRUE; // binary mode, no EOF check
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
686 stDCB.fParity = FALSE; // enable parity checking
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
687 stDCB.fDsrSensitivity = FALSE; // DSR sensitivity
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
688 stDCB.fTXContinueOnXoff = FALSE; // XOFF continues Tx
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
689 stDCB.fOutX = FALSE; // XON/XOFF out flow control
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
690 stDCB.fInX = FALSE; // XON/XOFF in flow control
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
691 stDCB.fErrorChar = FALSE; // enable error replacement
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
692 stDCB.fNull = FALSE; // enable null stripping
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
693 stDCB.fAbortOnError = FALSE; // abort reads/writes on error
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
694 stDCB.ByteSize = 8; // number of bits/byte, 4-8
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
695 stDCB.Parity = NOPARITY; // 0-4=no,odd,even,mark,space
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
696 stDCB.StopBits = ONESTOPBIT;// 0,1,2 = 1, 1.5, 2
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
697 stDCB.XonChar = 0; // Tx and Rx XON character
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
698 stDCB.XoffChar = 0; // Tx and Rx XOFF character
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
699 stDCB.ErrorChar = 0; // error replacement character
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
700 stDCB.EofChar = 0; // end of input character
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
701 stDCB.EvtChar = 0; // received event character
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
702
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
703 if (!SetCommState (hComDev, &stDCB))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
704 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
705 SetCommMask (hComDev, 0);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
706 CloseHandle (hComDev);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
707 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
708 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
709
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
710 if (!GetCommTimeouts (hComDev, &stTimeout))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
711 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
712
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
713 stTimeout.WriteTotalTimeoutConstant = 0xffff;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
714 stTimeout.WriteTotalTimeoutMultiplier = 0xffff;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
715 stTimeout.ReadTotalTimeoutConstant = 0xffff;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
716 stTimeout.ReadIntervalTimeout = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
717 stTimeout.ReadTotalTimeoutMultiplier = 0xffff;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
718
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
719 if (!SetCommTimeouts (hComDev, &stTimeout))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
720 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
721
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
722 PurgeComm (hComDev, PURGE_RXCLEAR
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
723 |PURGE_TXCLEAR
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
724 |PURGE_TXABORT
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
725 |PURGE_RXABORT);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
726
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
727 ClearCommError (hComDev, &dwErrorFlags, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
728
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
729 return TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
730 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
731
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
732 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
733 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
734 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
735 | STATE : code ROUTINE : sioRead |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
736 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
737
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
738 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
739
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
740 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
741
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
742 LOCAL BOOL sioRead (BYTE *bpRXBuffer, // RX Buffer
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
743 DWORD *pdwLength) // IN: Bytes to read
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
744 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
745 DWORD dwBytesToRead = *pdwLength ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
746 DWORD dwErrorFlags;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
747 COMSTAT stComStat;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
748
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
749 if (hComDev == INVALID_HANDLE_VALUE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
750 OR *pdwLength == 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
751 return FALSE; // device not available
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
752
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
753 if (m_mode==US_MODE_NT) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
754 if (!ReadFile (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
755 bpRXBuffer,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
756 dwBytesToRead,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
757 pdwLength,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
758 &gReadOverLap))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
759 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
760 // if there was a problem
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
761 if (GetLastError() == ERROR_IO_PENDING)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
762 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
763 /* asynchronous i/o is still in progress */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
764
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
765 /* do something else for a while */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
766 /* check on the results of the asynchronous read */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
767 if (GetOverlappedResult(gReadOverLap.hEvent, &gReadOverLap,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
768 pdwLength, TRUE))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
769 return TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
770 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
771
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
772 ClearCommError(hComDev, &dwErrorFlags, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
773 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
774 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
775 ClearCommError(hComDev, &dwErrorFlags, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
776 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
777 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
778 if (!ReadFile (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
779 bpRXBuffer,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
780 dwBytesToRead,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
781 pdwLength,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
782 NULL))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
783 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
784 // if there was a problem
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
785 ClearCommError(hComDev, &dwErrorFlags, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
786 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
787 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
788 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
789 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
790 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
791 char traceBuf[255];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
792 unsigned int i;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
793
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
794 traceBuf[0] = '\0';
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
795
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
796 if (bpRXBuffer[0] EQ 0xff)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
797 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
798 Sleep(1);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
799 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
800
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
801 for (i=0; i<*pdwLength; i++)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
802 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
803 if (!isprint (bpRXBuffer[i]))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
804 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
805 sprintf (traceBuf+strlen(traceBuf),
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
806 "[%02x]%c",
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
807 (USHORT) bpRXBuffer[i],
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
808 ((bpRXBuffer[i] EQ '\n') ? '\n' : ' ')
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
809 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
810 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
811 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
812 sprintf (traceBuf+strlen(traceBuf),
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
813 "%c",
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
814 bpRXBuffer[i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
815 if (strlen (traceBuf) > 200)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
816 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
817 write (usart_in, traceBuf, strlen (traceBuf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
818 traceBuf[0] = '\0';
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
819 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
820 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
821 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
822 * write the string to the tracefile
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
823 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
824 write (usart_in, traceBuf, strlen (traceBuf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
825 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
826 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
827 return TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
828 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
829
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
830 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
831 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
832 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
833 | STATE : code ROUTINE : sioWrite |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
834 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
835
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
836 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
837
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
838 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
839
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
840 LOCAL BOOL sioWrite (BYTE *bpTXBuffer, // TX Buffer
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
841 DWORD *pdwLength) // IN: Bytes to read
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
842 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
843 DWORD dwBytesToSend = *pdwLength, toSend, realySend;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
844 int ret;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
845 DWORD dwErrorFlags;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
846 COMSTAT stComStat;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
847 DWORD dwNumberOfBytesTransferred; /* Windows 95: */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
848 /* The number of transferred bytes returned by the */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
849 /* GetOverlappedResult function is always zero, also */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
850 /* if there are bytes received by the communication */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
851 /* partner via the serial line. */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
852
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
853 if (hComDev EQ INVALID_HANDLE_VALUE
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
854 OR !bpTXBuffer
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
855 OR *pdwLength ==0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
856 return FALSE; // device not available
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
857
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
858 realySend = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
859 toSend = dwBytesToSend;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
860
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
861 while (toSend > 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
862 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
863 if (m_mode==US_MODE_NT) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
864 if (toSend > 20) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
865 ret = WriteFile (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
866 bpTXBuffer+realySend,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
867 20,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
868 pdwLength,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
869 &gWriteOverLap);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
870 dwNumberOfBytesTransferred = 20;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
871 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
872 ret = WriteFile (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
873 bpTXBuffer+realySend,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
874 toSend,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
875 pdwLength,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
876 &gWriteOverLap);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
877 dwNumberOfBytesTransferred = toSend;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
878 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
879 /* if there was a problem, or the async. operation's still pending ... */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
880 if (!ret)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
881 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
882 /* deal with the error code */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
883 if (GetLastError() == ERROR_IO_PENDING)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
884 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
885 /* asynchronous i/o is still in progress */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
886
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
887 /* do something else for a while */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
888 /* check on the results of the asynchronous read */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
889 while (!GetOverlappedResult(gWriteOverLap.hEvent, &gWriteOverLap, pdwLength, TRUE))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
890 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
891 if(GetLastError() == ERROR_IO_INCOMPLETE) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
892 continue;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
893 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
894 break ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
895 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
896 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
897 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
898 ClearCommError(hComDev, &dwErrorFlags, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
899 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
900 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
901 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
902 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
903 if (toSend > 20) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
904 ret = WriteFile (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
905 bpTXBuffer+realySend,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
906 20,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
907 pdwLength,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
908 NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
909 dwNumberOfBytesTransferred = 20; /* US_MODE_NT */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
910 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
911 ret = WriteFile (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
912 bpTXBuffer+realySend,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
913 toSend,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
914 pdwLength,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
915 NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
916 dwNumberOfBytesTransferred = toSend; /* US_MODE_NT */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
917 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
918 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
919
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
920 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
921 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
922 char traceBuf[255];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
923 unsigned int i;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
924
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
925 traceBuf[0] = '\0';
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
926
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
927 for (i=0; i<*pdwLength; i++)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
928 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
929 if (!isprint (bpTXBuffer[realySend+i]))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
930 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
931 sprintf (traceBuf+strlen(traceBuf),
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
932 "[%02x]%c",
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
933 (USHORT) bpTXBuffer[realySend+i],
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
934 ((bpTXBuffer[realySend+i] EQ '\n') ? '\n': ' ')
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
935 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
936 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
937 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
938 sprintf (traceBuf+strlen(traceBuf),
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
939 "%c",
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
940 bpTXBuffer[realySend+i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
941 if (strlen (traceBuf) > 200)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
942 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
943 write (usart_out, traceBuf, strlen (traceBuf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
944 traceBuf[0] = '\0';
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
945 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
946 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
947 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
948 * write the string to the tracefile
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
949 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
950 write (usart_out, traceBuf, strlen (traceBuf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
951 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
952 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
953
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
954 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
955 case US_MODE_NT:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
956 realySend += dwNumberOfBytesTransferred;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
957 toSend -= dwNumberOfBytesTransferred;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
958 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
959 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
960 realySend += *pdwLength;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
961 toSend -= *pdwLength;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
962 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
963 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
964 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
965 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
966 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
967
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
968 *pdwLength = dwBytesToSend;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
969
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
970 return TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
971 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
972
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
973 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
974 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
975 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
976 | STATE : code ROUTINE : UT_Init |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
977 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
978
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
979 PURPOSE : initializes the USART driver
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
980
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
981 RETURNS : 0 ... initialization succeeded
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
982 -1 ... error
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
983
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
984 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
985
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
986
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
987 int UT_Init (unsigned int baudRate, int fifoSize, char flow_ctrl, void (func(void)), const char* fname )
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
988 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
989 if (initialized == TRUE)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
990 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
991 return 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
992 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
993
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
994 switch (m_mode)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
995 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
996 case US_MODE_FILE:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
997 if (!fname || !strlen(fname) || (m_file=fopen(fname,"rb"))==NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
998 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
999 fprintf (stdout, "USART: failed to open %s :-(\n",fname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1000 return -1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1001 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1002 fprintf (stdout, "USART: \"%s\" opened\n",fname);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1003 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1004 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1005 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1006 BOOL ret;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1007 DWORD dwThreadID;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1008 #ifdef COM_AUTOSEARCH
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1009 int from, to;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1010 int portNr;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1011 #else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1012 EXTERN int extPort;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1013 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1014
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1015 ReceiveCallback = func;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1016
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1017 #ifdef COM_AUTOSEARCH
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1018 if (P NEQ 0) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1019 from = to = P;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1020 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1021 from = 1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1022 to = 4;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1023 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1024
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1025 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1026 * try COMn: to COMm: where n is from and m is to
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1027 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1028 for (portNr = from; portNr <= to; portNr++)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1029 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1030 fprintf (stdout,"USART: Trying COM%d ... ", portNr);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1031
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1032 if ((ret = sioInit (portNr,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1033 convertBaudrate (baudRate),
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1034 10000 /*fifoSize*/,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1035 flow_ctrl)) EQ FALSE) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1036 fprintf (stdout, "fail\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1037 } else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1038 fprintf (stdout, "success!\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1039 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1040 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1041 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1042
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1043 #else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1044 fprintf (stdout, "USART: Trying COM%d ... ", extPort);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1045
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1046 if ((ret = sioInit (extPort,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1047 convertBaudrate (baudRate),
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1048 10000 /*fifoSize*/,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1049 flow_ctrl)) EQ FALSE) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1050 fprintf (stdout, "fail\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1051 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1052 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1053
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1054 if (ret)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1055 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1056 fprintf (stdout, "success!\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1057
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1058 if (ReceiveCallback NEQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1059 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1060 hThread = CreateThread ((LPSECURITY_ATTRIBUTES) NULL,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1061 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1062 (LPTHREAD_START_ROUTINE) _readerThread,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1063 (LPVOID) NULL,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1064 0,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1065 &dwThreadID
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1066 );
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1067 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1068 initialized = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1069 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1070 else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1071 fprintf (stdout, "USART: COM-port not free or baudrate not supported !\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1072 return -1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1073 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1074 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1075 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1076
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1077 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1078 int i;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1079
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1080 if ( first_ut_init )
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1081 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1082 if ( (ut_sema_handle = OpenSemaphore (SEMAPHORE_MODIFY_STATE | SYNCHRONIZE, FALSE, "UT_SIM_SEMA")) == NULL )
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1083 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1084 ut_sema_handle = CreateSemaphore (NULL, 1, 1, "UT_SIM_SEMA");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1085 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1086 first_ut_init = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1087 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1088
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1089 WaitForSingleObject (ut_sema_handle, INFINITE);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1090
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1091 if ((Stream = (T_USARTStream *) openUSARTMemory
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1092 (
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1093 (char*)"GSM",
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1094 sizeof (T_USARTStream)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1095 )) EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1096 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1097 if ((Stream = (T_USARTStream *) createUSARTMemory
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1098 (
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1099 (char*)"GSM",
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1100 sizeof (T_USARTStream)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1101 )) EQ NULL)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1102 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1103 PrintToFile ("USART: simulation could not create a shared memory area\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1104 return -1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1105 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1106 PrintToFile ("USART: shared memory area created\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1107
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1108 Stream->CH1_numOfBytes = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1109 Stream->CH2_numOfBytes = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1110
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1111 Stream->CH1_CTS = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1112 Stream->CH2_CTS = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1113
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1114 for (i=0; i<USART_BUFFER_SIZE; i++)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1115 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1116 Stream->CH1_data[i] = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1117 Stream->CH2_data[i] = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1118 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1119
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1120 Stream->Connects = 0; /* init connection counter (!! CURRENTLY NOT USED !!) */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1121 Stream->Type=1; /* signaling new type */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1122 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1123 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1124 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1125 PrintToFile ("USART: shared memory area opened\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1126 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1127
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1128 /* set pointers to semaphores and data buffers */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1129 #ifdef _TOOLS_
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1130 if (Stream->Type==0) // shared mem created by old stack
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1131 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1132 PrintToFile ("USART: connecting to old stack !\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1133
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1134 Stream->CH1_CTS = 1; // (baudRate NEQ -1); removed because baudrate never negative
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1135
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1136 InBuffer = Stream->CH1_data;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1137 OutBuffer = Stream->CH2_data;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1138 InCounter = &Stream->CH1_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1139 OutCounter = &Stream->CH2_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1140 semRCVFull = &SemCH1_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1141 semRCVEmpty = &SemCH1_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1142 semSNDFull = &SemCH2_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1143 semSNDEmpty = &SemCH2_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1144 CTS = &Stream->CH2_CTS;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1145 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1146 else // shared mem created by us or new stack
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1147 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1148 Stream->CH2_CTS = 1; // (baudRate NEQ -1); removed because baudrate never negative
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1149
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1150 InBuffer = Stream->CH2_data;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1151 OutBuffer = Stream->CH1_data;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1152 InCounter = &Stream->CH2_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1153 OutCounter = &Stream->CH1_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1154 semRCVFull = &SemCH2_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1155 semRCVEmpty = &SemCH2_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1156 semSNDFull = &SemCH1_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1157 semSNDEmpty = &SemCH1_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1158 CTS = &Stream->CH1_CTS;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1159 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1160 #else /* _TOOLS_ */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1161 Stream->CH1_CTS = 1; // (baudRate NEQ -1); removed because baudrate never negative
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1162
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1163 InBuffer = Stream->CH1_data;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1164 OutBuffer = Stream->CH2_data;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1165 InCounter = &Stream->CH1_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1166 OutCounter = &Stream->CH2_numOfBytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1167 semRCVFull = &SemCH1_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1168 semRCVEmpty = &SemCH1_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1169 semSNDFull = &SemCH2_full;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1170 semSNDEmpty = &SemCH2_empty;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1171 CTS = &Stream->CH2_CTS;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1172 #endif /* _TOOLS_ */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1173
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1174 readPointer = InBuffer;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1175
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1176 ReceiveCallback = func;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1177
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1178 Stream->Connects++; /* mark connection (!! CURRENTLY NOT USED !!) */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1179 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1180
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1181 ReleaseSemaphore (ut_sema_handle, 1, NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1182
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1183 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1184 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1185 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1186 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1187 initialized = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1188 mem_closed = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1189
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1190 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1191 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1192 * Open protocol file and initialize
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1193 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1194
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1195 usart_in = open ("USART.IN", O_WRONLY| O_TEXT| O_TRUNC| O_CREAT, 0666);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1196 usart_out = open ("USART.OUT", O_WRONLY| O_TEXT| O_TRUNC| O_CREAT, 0666);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1197 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1198
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1199 return 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1200 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1201
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1202
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1203 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1204 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1205 | PROJECT : GSM-PS (6147) MODULE : USARTSIM |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1206 | STATE : code ROUTINE : UT_Close |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1207 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1208
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1209 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1210
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1211 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1212
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1213 GLOBAL BOOL UT_Close(void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1214 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1215
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1216 if (initialized == FALSE)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1217 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1218
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1219 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1220 case US_MODE_FILE:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1221 if (m_file)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1222 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1223 fclose(m_file);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1224 m_file=NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1225 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1226 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1227 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1228 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1229 DWORD ExitCode;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1230
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1231 if (ReceiveCallback != NULL) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1232 /* Initialize stop _readerThread */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1233 ReaderThreadExitRequest = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1234 while (ReaderThreadExitRequest == TRUE)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1235 SetCommMask (hComDev, 0);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1236 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1237
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1238 /* Close Communication port. */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1239 PurgeComm (hComDev,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1240 PURGE_TXABORT | PURGE_RXABORT |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1241 PURGE_TXCLEAR | PURGE_RXCLEAR ) ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1242 if (m_mode==UT_MODE_NT) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1243 CloseHandle (gReadOverLap.hEvent);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1244 gReadOverLap.hEvent = INVALID_HANDLE_VALUE ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1245 CloseHandle (gWriteOverLap.hEvent);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1246 gWriteOverLap.hEvent = INVALID_HANDLE_VALUE ;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1247 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1248 CloseHandle (hComDev);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1249 hComDev = INVALID_HANDLE_VALUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1250
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1251 if (ReceiveCallback != NULL) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1252 /* Stop _readerThread */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1253 do {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1254 GetExitCodeThread(hThread, (LPDWORD) &ExitCode);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1255 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1256 while (ExitCode == STILL_ACTIVE);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1257 CloseHandle (hThread);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1258 hThread = INVALID_HANDLE_VALUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1259 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1260
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1261 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1262 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1263 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1264 PrintToFile("USART: shared memory closed (%d)\n",cls_cnt);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1265 mem_closed = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1266 /* mark disconnection */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1267 Stream->Connects=(Stream->Connects>1) ? 1 : 0; /* (!! CURRENTLY NOT USED !!) */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1268
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1269 #ifdef _TOOLS_
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1270 if (Stream->Type==0) /* shared mem created by old stack */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1271 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1272 fprintf (stdout, "USART: disconnecting from old stack !\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1273 Stream->CH1_CTS = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1274 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1275 else /* shared mem created by us or new stack */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1276 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1277 Stream->CH2_CTS = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1278 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1279 #else /* _TOOLS_ */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1280 Stream->CH1_CTS = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1281 #endif /* _TOOLS_ */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1282
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1283 CTS = NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1284 /* close all handles */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1285 UnmapViewOfFile((void*)Stream);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1286 CloseHandle(USARTMemHandle);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1287 CloseHandle(SemCH1_full);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1288 CloseHandle(SemCH2_full);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1289 CloseHandle(SemCH1_empty);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1290 CloseHandle(SemCH2_empty);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1291 cls_cnt++;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1292 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1293 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1294 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1295 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1296 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1297
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1298 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1299 /* close tracefiles for usart-in and out */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1300 close(usart_in);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1301 close(usart_out);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1302 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1303
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1304 /* Deinitialize */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1305 ReceiveCallback = NULL;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1306 initialized = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1307
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1308 return TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1309 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1310
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1311
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1312 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1313 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1314 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1315 | STATE : code ROUTINE : UT_InitBlk |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1316 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1317
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1318 PURPOSE : Initialize the USART for reading blocks
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1319
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1320 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1321
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1322 int UT_InitBlk ( unsigned int baudRate, int fifoSize, char flow_ctrl, void *hP)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1323 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1324 return UT_Init (baudRate, fifoSize, flow_ctrl, NULL, NULL);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1325 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1326
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1327 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1328 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1329 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1330 | STATE : code ROUTINE : UT_IsChar |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1331 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1332
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1333 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1334
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1335 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1336
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1337 GLOBAL int UT_IsChar (void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1338 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1339 int ret;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1340
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1341 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1342 case US_MODE_FILE:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1343 Sleep(FILE_SLOW_DOWN);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1344 while (feof(m_file))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1345 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1346 Sleep(1000);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1347 fseek(m_file,0,SEEK_CUR);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1348 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1349 ret=1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1350 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1351 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1352 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1353 static COMSTAT stComStat;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1354 static DWORD dwErrors;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1355
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1356 if (!initialized)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1357 return FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1358
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1359 waitForRCVBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1360
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1361 ClearCommError (hComDev, &dwErrors, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1362
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1363 ret= (stComStat.cbInQue > 0);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1364 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1365 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1366
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1367 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1368 waitForRCVBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1369 ret = (*InCounter NEQ 0);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1370
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1371 if (ret EQ 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1372 readPointer = InBuffer;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1373 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1374 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1375 ret = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1376 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1377 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1378 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1379
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1380 return ret;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1381 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1382
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1383 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1384 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1385 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1386 | STATE : code ROUTINE : UT_ReadChar |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1387 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1388
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1389 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1390
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1391 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1392
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1393 GLOBAL BYTE UT_ReadChar (void)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1394 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1395 BYTE ret=0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1396
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1397 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1398 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1399 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1400
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1401 BYTE buffer[1];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1402 ULONG bytesRead;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1403
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1404 if (!initialized)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1405 return 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1406
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1407 sioRead (buffer, &bytesRead);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1408
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1409 if (!bytesRead)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1410 buffer[0] = 0xff;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1411
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1412 ret=buffer[0];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1413 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1414 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1415
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1416 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1417 if (*InCounter NEQ 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1418 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1419 ret = *readPointer++;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1420
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1421 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1422 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1423 BYTE buf[20];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1424 sprintf (buf, "R[1 of %d]: ", *InCounter);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1425 write (usart_in,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1426 buf,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1427 strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1428 if (isprint (ret))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1429 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1430 sprintf (buf, "%c\n", ret);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1431 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1432 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1433 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1434 sprintf (buf, "(%02X)\n", ret);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1435 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1436 write (usart_in,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1437 buf,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1438 strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1439 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1440 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1441
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1442 (*InCounter)--;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1443
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1444 if (*InCounter EQ 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1445 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1446 readPointer = InBuffer;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1447 markRCVBufferEmpty ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1448 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1449 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1450 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1451 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1452 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1453 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1454 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1455 return ret;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1456 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1457
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1458 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1459 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1460 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1461 | STATE : code ROUTINE : UT_ReadNChars |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1462 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1463
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1464 PURPOSE : Called from the HISR - Reads a block of characters
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1465 Parameters : buffer for holding received characters,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1466 max. size of buffer
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1467 Returns the number of characters read
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1468
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1469 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1470
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1471 GLOBAL ULONG UT_ReadNChars (int usart_id, BYTE *buffer, ULONG bufferSize)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1472 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1473 ULONG bytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1474
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1475 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1476 case US_MODE_FILE:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1477 if (bufferSize>FILE_MAX_CHUNK)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1478 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1479 bufferSize=FILE_MAX_CHUNK;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1480 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1481 bytes=fread(buffer,1,bufferSize,m_file);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1482 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1483 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1484 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1485
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1486 COMSTAT stComStat;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1487 DWORD dwErrors;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1488
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1489 if (!initialized)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1490 return 0L;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1491
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1492 ClearCommError (hComDev, &dwErrors, &stComStat);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1493
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1494 bytes = MINIMUM (stComStat.cbInQue, bufferSize);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1495
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1496 if (bytes EQ 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1497 return 0L;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1498
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1499 sioRead (buffer, &bytes);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1500 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1501 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1502
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1503 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1504 if ((bytes = MINIMUM (*InCounter, bufferSize)) NEQ 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1505 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1506 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1507 unsigned int i;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1508 char buf[50];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1509 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1510
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1511 memcpy (buffer, readPointer, bytes);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1512
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1513 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1514 sprintf (buf, "R[%d of %d]: ", bytes, *InCounter);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1515 write (usart_in, buf, strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1516
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1517 for (i=0; i<bytes; i++)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1518 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1519 if (isprint (buffer[i]))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1520 sprintf (buf, "%c", buffer[i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1521 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1522 sprintf (buf, "(%02X)", buffer[i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1523 write (usart_in,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1524 buf,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1525 strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1526 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1527 write (usart_in, "\n", 1);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1528 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1529
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1530 (*InCounter) -= (USHORT)bytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1531
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1532 if (*InCounter EQ 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1533 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1534 readPointer = InBuffer;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1535 markRCVBufferEmpty ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1536 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1537 else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1538 readPointer += bytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1539 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1540 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1541 else {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1542 markRCVBufferEmpty ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1543 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1544 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1545 default: bytes = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1546 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1547 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1548 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1549
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1550 return bytes;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1551 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1552
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1553 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1554 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1555 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1556 | STATE : code ROUTINE : UT_WriteChar |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1557 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1558
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1559 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1560
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1561 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1562
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1563 GLOBAL void UT_WriteChar (int usart_id, char ch)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1564 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1565 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1566 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1567 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1568 BYTE buffer[1];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1569 ULONG bytesWritten = 1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1570
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1571 if (!initialized)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1572 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1573
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1574 buffer[0] = (BYTE)ch;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1575
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1576 sioWrite (buffer, &bytesWritten);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1577 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1578 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1579
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1580 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1581 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1582 char buf[50];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1583 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1584
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1585 if ( CTS == NULL || !*CTS) /* no testtools connected */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1586 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1587 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1588 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1589
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1590 if (waitForSNDBufferEmpty () != 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1591 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1592 markSNDBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1593 return; /* we gave up sending to avoid dead lock */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1594 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1595
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1596 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1597 sprintf (buf, "W[1]: %02X", ch);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1598 write (usart_out, buf, strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1599 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1600
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1601 *OutBuffer = (UBYTE)ch;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1602 *OutCounter = 1;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1603
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1604 markSNDBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1605 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1606 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1607 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1608 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1609 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1610 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1611
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1612 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1613 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1614 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1615 | STATE : code ROUTINE : UT_WriteString |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1616 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1617
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1618 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1619
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1620 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1621
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1622 GLOBAL void UT_WriteString (int usart_id, char *s)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1623 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1624 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1625 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1626 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1627 ULONG bytesWritten = strlen (s);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1628
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1629 if (!initialized)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1630 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1631
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1632 sioWrite ((BYTE *) s, &bytesWritten);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1633 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1634 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1635
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1636 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1637 unsigned int numOfChars;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1638 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1639 int i;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1640 char buf[50];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1641 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1642
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1643 if ( CTS == NULL || !*CTS) /* no testtools connected */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1644 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1645 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1646 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1647
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1648 if (waitForSNDBufferEmpty () != 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1649 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1650 markSNDBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1651 return; /* we gave up sending to avoid dead lock */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1652 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1653
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1654 numOfChars = strlen (s);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1655
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1656 memcpy (OutBuffer, s, numOfChars);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1657 *OutCounter = numOfChars;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1658
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1659 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1660 sprintf (buf, "W[%d]:", numOfChars);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1661 write (usart_out, buf, strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1662
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1663 for (i=0; i<numOfChars; i++)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1664 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1665 if (isprint (OutBuffer[i]))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1666 sprintf (buf, "%c", OutBuffer[i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1667 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1668 sprintf (buf, "(%02X)", OutBuffer[i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1669 write (usart_out,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1670 buf,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1671 strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1672
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1673 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1674 write (usart_out,"\n", 1);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1675 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1676
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1677 markSNDBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1678 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1679 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1680 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1681 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1682 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1683 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1684
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1685
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1686 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1687 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1688 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1689 | STATE : code ROUTINE : UT_WriteNChars |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1690 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1691
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1692 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1693
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1694 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1695
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1696 GLOBAL void UT_WriteNChars (int usart_id, BYTE *s, unsigned int n)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1697 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1698 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1699 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1700 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1701 ULONG bytesWritten = (ULONG) n;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1702
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1703 if (!initialized)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1704 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1705
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1706 if (!sioWrite ((BYTE *) s, &bytesWritten))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1707 fprintf (stderr, "USART: Error1\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1708 if (bytesWritten NEQ (ULONG) n)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1709 fprintf (stderr, "USART: Error2\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1710 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1711 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1712
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1713 case US_MODE_SIM: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1714 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1715 int i;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1716 char buf[50];
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1717 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1718
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1719 if ( CTS == NULL || !*CTS) /* no testtools connected */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1720 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1721 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1722 printf("-");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1723 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1724 snd_cnt++;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1725 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1726 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1727
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1728 if ( mem_closed == TRUE )
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1729 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1730 PrintToFile("USART:tried to write on closed memory (%d)\n",snd_cnt);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1731 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1732 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1733 if (waitForSNDBufferEmpty () != 0)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1734 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1735 markSNDBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1736 PrintToFile("USART: gave up sending\n");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1737 snd_cnt++;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1738 return; /* we gave up sending to avoid dead lock */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1739 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1740 memcpy (OutBuffer, s, n);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1741 *OutCounter = n;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1742
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1743 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1744 sprintf (buf, "W[%d]:", n);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1745 write (usart_out, buf, strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1746
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1747 for (i=0; i<n; i++)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1748 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1749 if (isprint (OutBuffer[i]))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1750 sprintf (buf, "%c", OutBuffer[i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1751 else
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1752 sprintf (buf, "(%02X)", OutBuffer[i]);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1753 write (usart_out,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1754 buf,
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1755 strlen (buf));
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1756 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1757 write (usart_out,"\n", 1);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1758 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1759
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1760 if ( mem_closed == TRUE )
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1761 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1762 PrintToFile("USART: written on closed memory (%d)\n",snd_cnt);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1763 snd_cnt++;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1764 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1765 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1766 #ifdef DEBUG_USART
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1767 printf("+");
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1768 #endif
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1769 markSNDBufferFull ();
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1770 snd_cnt++;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1771 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1772 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1773 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1774 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1775 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1776 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1777
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1778 /*
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1779 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1780 | PROJECT : GSM-PS (6147) MODULE : USART |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1781 | STATE : code ROUTINE : UT_SetFlowCtrl |
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1782 +--------------------------------------------------------------------+
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1783
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1784 PURPOSE :
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1785
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1786 */
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1787
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1788 GLOBAL void UT_SetFlowCtrl (char flowCtrl)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1789 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1790 switch (m_mode) {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1791 case US_MODE_95:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1792 case US_MODE_NT: {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1793 DCB stDCB;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1794
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1795 if (!GetCommState (hComDev, &stDCB))
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1796 return;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1797
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1798 stDCB.DCBlength = sizeof (stDCB); // sizeof(DCB)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1799
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1800 switch (flowCtrl)
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1801 {
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1802 case 'N':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1803 stDCB.fOutxCtsFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1804 stDCB.fOutxDsrFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1805 stDCB.fDtrControl = DTR_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1806 stDCB.fRtsControl = RTS_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1807 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1808 case 'D':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1809 stDCB.fOutxCtsFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1810 stDCB.fOutxDsrFlow = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1811 stDCB.fDtrControl = DTR_CONTROL_HANDSHAKE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1812 stDCB.fRtsControl = RTS_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1813 stDCB.XonLim = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1814 stDCB.XoffLim = 50;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1815 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1816 case 'R':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1817 stDCB.fOutxCtsFlow = TRUE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1818 stDCB.fOutxDsrFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1819 stDCB.fDtrControl = DTR_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1820 stDCB.fRtsControl = RTS_CONTROL_HANDSHAKE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1821 stDCB.XonLim = 0;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1822 stDCB.XoffLim = 50;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1823 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1824 case 'P':
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1825 stDCB.fOutxCtsFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1826 stDCB.fOutxDsrFlow = FALSE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1827 stDCB.fDtrControl = DTR_CONTROL_ENABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1828 stDCB.fRtsControl = RTS_CONTROL_DISABLE;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1829 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1830 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1831 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1832 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1833
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1834 SetCommState (hComDev, &stDCB);
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1835 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1836 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1837
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1838 case US_MODE_SIM:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1839 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1840 default:
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1841 break;
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1842 }
cd37d228dae0 src/gpf2/{misc,tst}: import from TCS211 semi-src
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1843 }