aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/c_display.iom
blob: 2e1ab7423c8172f1be842b801030050fef541d73 (plain)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
//
// Programmer
//
// Date init       14.12.2004
//
// Reviser         $Author:: Dkandlun                                        $
//
// Revision date   $Date:: 14-11-07 12:40                                    $
//
// Filename        $Workfile:: c_display.iom                                 $
//
// Version         $Revision:: 1                                             $
//
// Archive         $Archive:: /LMS2006/Sys01/Main_V02/Firmware/Source/c_disp $
//
// Platform        C
//

#ifndef   CDISPLAY_IOM
#define   CDISPLAY_IOM

#define   pMapDisplay ((IOMAPDISPLAY*)(pHeaders[ENTRY_DISPLAY]->pIOMap))

// Constants related to simple draw entry (x = dont care)
enum
{
  DISPLAY_ERASE_ALL         = 0x00,     // W  - erase entire screen     (CMD,x,x,x,x,x)
  DISPLAY_PIXEL             = 0x01,     // W  - set pixel (on/off)      (CMD,TRUE/FALSE,X,Y,x,x)
  DISPLAY_HORISONTAL_LINE   = 0x02,     // W  - draw horisontal line    (CMD,TRUE,X1,Y1,X2,x)
  DISPLAY_VERTICAL_LINE     = 0x03,     // W  - draw vertical line      (CMD,TRUE,X1,Y1,x,Y2)
  DISPLAY_CHAR              = 0x04      // W  - draw char (actual font) (CMD,TRUE,X1,Y1,Char,x)
};

// Constants related to Flags
enum
{
  DISPLAY_ON                = 0x01,     // W  - Display on
  DISPLAY_REFRESH           = 0x02,     // W  - Enable refresh
  DISPLAY_POPUP             = 0x08,     // W  - Use popup display memory
  DISPLAY_REFRESH_DISABLED  = 0x40,     // R  - Refresh disabled
  DISPLAY_BUSY              = 0x80      // R  - Refresh in progress
};


#define   DISPLAY_HEIGHT      64        // Y pixels
#define   DISPLAY_WIDTH       100       // X pixels

#define   DISPLAY_MENUICONS_Y       40
#define   DISPLAY_MENUICONS_X_OFFS  7
#define   DISPLAY_MENUICONS_X_DIFF  31

#define   DISPLAY_IDLE                  ((pMapDisplay->EraseMask == 0) && (pMapDisplay->UpdateMask == 0))

enum      TEXTLINE_NO                   // Used in macro "TEXTLINE_BIT"
{
  TEXTLINE_1,                           // Upper most line
  TEXTLINE_2,                           //
  TEXTLINE_3,                           //
  TEXTLINE_4,                           //
  TEXTLINE_5,                           //
  TEXTLINE_6,                           //
  TEXTLINE_7,                           //
  TEXTLINE_8,                           // Buttom line
  TEXTLINES
};

enum      MENUICON_NO                   // Used in macro "MENUICON_BIT"
{
  MENUICON_LEFT,                        // Left icon
  MENUICON_CENTER,                      // Center icon
  MENUICON_RIGHT,                       // Right icon
  MENUICONS
};

enum      SPECIAL_NO                    // Used in macro "SPECIAL_BIT"
{
  FRAME_SELECT,                         // Center icon select frame
  STATUSTEXT,                           // Status text (BT name)
  MENUTEXT,                             // Center icon text
  STEPLINE,                             // Step collection lines
  TOPLINE,                              // Top status underline
  SPECIALS
};

enum      STATUSICON_NO                 // Used in macro "STATUSICON_BIT"
{
  STATUSICON_BLUETOOTH,                 // BlueTooth status icon collection
  STATUSICON_USB,                       // USB status icon collection
  STATUSICON_VM,                        // VM status icon collection
  STATUSICON_BATTERY,                   // Battery status icon collection
  STATUSICONS
};

enum      SCREEN_NO                     // Used in macro "SCREEN_BIT"
{
  SCREEN_BACKGROUND,                    // Entire screen
  SCREEN_LARGE,                         // Entire screen except status line
  SCREEN_SMALL,                         // Screen between menu icons and status line
  SCREENS
};

enum      BITMAP_NO                     // Used in macro "BITMAP_BIT"
{
  BITMAP_1,                             // Bitmap 1
  BITMAP_2,                             // Bitmap 2
  BITMAP_3,                             // Bitmap 3
  BITMAP_4,                             // Bitmap 4
  BITMAPS
};

enum      STEP_NO                       // Used in macro "STEPICON_BIT"
{
  STEPICON_1,                           // Left most step icon
  STEPICON_2,                           //
  STEPICON_3,                           //
  STEPICON_4,                           //
  STEPICON_5,                           // Right most step icon
  STEPICONS
};

#define   SCREEN_BITS                   ((ULONG)0xE0000000)  // Executed as 1.
#define   STEPICON_BITS                 ((ULONG)0x1F000000)  // Executed as 2.
#define   BITMAP_BITS                   ((ULONG)0x00F00000)  // Executed as 3.
#define   MENUICON_BITS                 ((ULONG)0x000E0000)  // Executed as 4.
#define   STATUSICON_BITS               ((ULONG)0x0001E000)  // Executed as 5.
#define   SPECIAL_BITS                  ((ULONG)0x00001F00)  // Executed as 6.
#define   TEXTLINE_BITS                 ((ULONG)0x000000FF)  // Executed as 7.

#define   SCREEN_BIT(No)                ((ULONG)0x20000000 << (No))
#define   STEPICON_BIT(No)              ((ULONG)0x01000000 << (No))  
#define   BITMAP_BIT(No)                ((ULONG)0x00100000 << (No))
#define   MENUICON_BIT(No)              ((ULONG)0x00020000 << (No))
#define   STATUSICON_BIT(No)            ((ULONG)0x00002000 << (No))
#define   SPECIAL_BIT(No)               ((ULONG)0x00000100 << (No))
#define   TEXTLINE_BIT(No)              ((ULONG)0x00000001 << (No))


typedef   struct
{
  void    (*pFunc)(UBYTE,UBYTE,UBYTE,UBYTE,UBYTE,UBYTE);    // Simple draw entry

  ULONG   EraseMask;                                        // Section erase mask   (executed first)
  ULONG   UpdateMask;                                       // Section update mask  (executed next)

  FONT    *pFont;                                           // Pointer to font file
  UBYTE   *pTextLines[TEXTLINES];                           // Pointer to text strings

  UBYTE   *pStatusText;                                     // Pointer to status text string
  ICON    *pStatusIcons;                                    // Pointer to status icon collection file

  BMPMAP  *pScreens[SCREENS];                               // Pointer to screen bitmap file
  BMPMAP  *pBitmaps[BITMAPS];                               // Pointer to free bitmap files

  UBYTE   *pMenuText;                                       // Pointer to menu icon text                (NULL == none)
  UBYTE   *pMenuIcons[MENUICONS];                           // Pointer to menu icon images              (NULL == none)

  ICON    *pStepIcons;                                      // Pointer to step icon collection file

  UBYTE   *Display;                                         // Display content copied to physical display every 17 mS
  
  UBYTE   StatusIcons[STATUSICONS];                         // Index in status icon collection file     (index = 0 -> none)

  UBYTE   StepIcons[STEPICONS];                             // Index in step icon collection file       (index = 0 -> none)

  UBYTE   Flags;                                            // Update flags enumerated above

  UBYTE   TextLinesCenterFlags;                             // Mask to center TextLines

  UBYTE   Normal[DISPLAY_HEIGHT / 8][DISPLAY_WIDTH];        // Raw display memory for normal screen
  UBYTE   Popup[DISPLAY_HEIGHT / 8][DISPLAY_WIDTH];         // Raw display memory for popup screen
}
IOMAPDISPLAY;

#endif