-
Notifications
You must be signed in to change notification settings - Fork 0
/
session.h
79 lines (71 loc) · 3.17 KB
/
session.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#ifndef SESSION_H /* Convention is file name with '.' replaced by underscores. */
#define SESSION_H
/* INCLUDES: ------------------------------------------------------------------*/
#include <Windows.h>
#include <tchar.h>
/* MACROS: ----------------------------------------------------------------------
-- BUFFER(x, y)
-- Returns pointer at buffer location specified by line x, column y.
-------------------------------------------------------------------------------*/
#define BUFFER(x, y) *(pBuffer + y * pCursor->cxBuffer + x)
/* STRUCTS: ---------------------------------------------------------------------
-- _CURSOR, CURSOR, *PCURSOR
-- int xCaret: The horizontal grid position of the cursor.
-- int yCaret: The vertical grid position of the cursor.
-- int cxBuffer: The width of the display area (buffer) in chars.
-- int cyBuffer: The height of the display area (buffer) in chars.
-- int cxChar: The width of a character in pixels.
-- int cyChar: The height of a character in pixels.
--
-- _OUTPUT, OUTPUT, *POUTPUT
-- TCHAR* out: Pointer to the output buffer. This stores every
-- character received by the program. Used for repainting
-- the display area. This buffer dynamically resizes when
-- necessary.
-- int pos: A pointer to the "cursor" position in the output buffer.
-- int size: The size of the output buffer. Used to detirmine
-- available remaining space and when to resize.
--
-- _WDATA, WDATA, *PWDATA
-- HANDLE hCom: A handle to the serial port.
-- enum STATE state: Tracks the current state of the program.
-- POUTPUT pOutput: Pointer to the program's output object.
-- CURSOR cursor: The program's cursor object.
-------------------------------------------------------------------------------*/
typedef struct _CURSOR {
int xCaret;
int yCaret;
int cxBuffer;
int cyBuffer;
int cxChar;
int cyChar;
} CURSOR, *PCURSOR;
typedef struct _OUTPUT {
TCHAR* out;
int pos;
int size;
} OUTPUT, *POUTPUT;
typedef struct _WDATA {
HANDLE hCom;
enum STATE state;
POUTPUT pOutput;
CURSOR cursor;
} WDATA, *PWDATA;
/* ENUMERATORS: -----------------------------------------------------------------
-- STATE
-- COMMAND: Command mode is the default mode, Comm ports are closed and
-- program is waiting for user input.
-- CONNECT: Connect mode is enabled when a Comm port is open and the
-- program is actively listening for keystrokes and polling
-- the serial port.
-------------------------------------------------------------------------------*/
enum STATE {
COMMAND,
CONNECT
};
/* PROTOTYPES: ----------------------------------------------------------------*/
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
HANDLE ConnectComm(HWND, LPCWSTR);
void pollPort(HWND, PWDATA);
BOOL outputAddChar(TCHAR, POUTPUT);
#endif