diff options
-rw-r--r-- | apps/main.c | 6 | ||||
-rw-r--r-- | apps/wps.c | 8 | ||||
-rw-r--r-- | firmware/drivers/button.h | 4 | ||||
-rw-r--r-- | firmware/drivers/serial.c | 111 | ||||
-rw-r--r-- | firmware/drivers/serial.h | 8 |
5 files changed, 97 insertions, 40 deletions
diff --git a/apps/main.c b/apps/main.c index 887c85b64e..307dd71e3d 100644 --- a/apps/main.c +++ b/apps/main.c | |||
@@ -36,6 +36,9 @@ | |||
36 | #ifndef SIMULATOR | 36 | #ifndef SIMULATOR |
37 | #include "dmalloc.h" | 37 | #include "dmalloc.h" |
38 | #include "bmalloc.h" | 38 | #include "bmalloc.h" |
39 | #ifndef DEBUG | ||
40 | #include "serial.h" | ||
41 | #endif | ||
39 | #endif | 42 | #endif |
40 | #include "mpeg.h" | 43 | #include "mpeg.h" |
41 | #include "main_menu.h" | 44 | #include "main_menu.h" |
@@ -50,6 +53,7 @@ | |||
50 | #include "unicode.h" | 53 | #include "unicode.h" |
51 | #endif | 54 | #endif |
52 | 55 | ||
56 | |||
53 | char appsversion[]=APPSVERSION; | 57 | char appsversion[]=APPSVERSION; |
54 | 58 | ||
55 | void init(void); | 59 | void init(void); |
@@ -98,6 +102,8 @@ void init(void) | |||
98 | 102 | ||
99 | #ifdef DEBUG | 103 | #ifdef DEBUG |
100 | debug_init(); | 104 | debug_init(); |
105 | #else | ||
106 | serial_setup(); | ||
101 | #endif | 107 | #endif |
102 | set_irq_level(0); | 108 | set_irq_level(0); |
103 | 109 | ||
diff --git a/apps/wps.c b/apps/wps.c index 4de87383d3..3137a265a9 100644 --- a/apps/wps.c +++ b/apps/wps.c | |||
@@ -296,6 +296,9 @@ int wps_show(void) | |||
296 | #ifdef HAVE_RECORDER_KEYPAD | 296 | #ifdef HAVE_RECORDER_KEYPAD |
297 | case BUTTON_UP: | 297 | case BUTTON_UP: |
298 | case BUTTON_UP | BUTTON_REPEAT: | 298 | case BUTTON_UP | BUTTON_REPEAT: |
299 | #else | ||
300 | case BUTTON_VOL_UP: | ||
301 | #endif | ||
299 | if (keys_locked) | 302 | if (keys_locked) |
300 | { | 303 | { |
301 | display_keylock_text(keys_locked); | 304 | display_keylock_text(keys_locked); |
@@ -310,8 +313,12 @@ int wps_show(void) | |||
310 | status_draw(); | 313 | status_draw(); |
311 | break; | 314 | break; |
312 | 315 | ||
316 | #ifdef HAVE_RECORDER_KEYPAD | ||
313 | case BUTTON_DOWN: | 317 | case BUTTON_DOWN: |
314 | case BUTTON_DOWN | BUTTON_REPEAT: | 318 | case BUTTON_DOWN | BUTTON_REPEAT: |
319 | #else | ||
320 | case BUTTON_VOL_DOWN: | ||
321 | #endif | ||
315 | if (keys_locked) | 322 | if (keys_locked) |
316 | { | 323 | { |
317 | display_keylock_text(keys_locked); | 324 | display_keylock_text(keys_locked); |
@@ -325,7 +332,6 @@ int wps_show(void) | |||
325 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | 332 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); |
326 | status_draw(); | 333 | status_draw(); |
327 | break; | 334 | break; |
328 | #endif | ||
329 | 335 | ||
330 | case BUTTON_LEFT: | 336 | case BUTTON_LEFT: |
331 | if (keys_locked) | 337 | if (keys_locked) |
diff --git a/firmware/drivers/button.h b/firmware/drivers/button.h index 035fedd739..6563f1bc41 100644 --- a/firmware/drivers/button.h +++ b/firmware/drivers/button.h | |||
@@ -38,6 +38,10 @@ int button_set_release(int newmask); | |||
38 | #define BUTTON_LEFT 0x0040 | 38 | #define BUTTON_LEFT 0x0040 |
39 | #define BUTTON_RIGHT 0x0080 | 39 | #define BUTTON_RIGHT 0x0080 |
40 | 40 | ||
41 | /* remote control buttons */ | ||
42 | #define BUTTON_VOL_UP 0x1000 | ||
43 | #define BUTTON_VOL_DOWN 0x1001 | ||
44 | |||
41 | /* Button modifiers */ | 45 | /* Button modifiers */ |
42 | #define BUTTON_REPEAT 0x4000 | 46 | #define BUTTON_REPEAT 0x4000 |
43 | #define BUTTON_REL 0x8000 | 47 | #define BUTTON_REL 0x8000 |
diff --git a/firmware/drivers/serial.c b/firmware/drivers/serial.c index ca69147cd3..ee83e2a474 100644 --- a/firmware/drivers/serial.c +++ b/firmware/drivers/serial.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * \/ \/ \/ \/ \/ | 7 | * \/ \/ \/ \/ \/ |
8 | * $Id$ | 8 | * $Id$ |
9 | * | 9 | * |
10 | * Copyright (C) 2002 by Alan Korr | 10 | * Copyright (C) 2002 by Alan Korr & Nick Robinson |
11 | * | 11 | * |
12 | * All files in this archive are subject to the GNU General Public License. | 12 | * All files in this archive are subject to the GNU General Public License. |
13 | * See the file COPYING in the source tree root for full license agreement. | 13 | * See the file COPYING in the source tree root for full license agreement. |
@@ -16,54 +16,101 @@ | |||
16 | * KIND, either express or implied. | 16 | * KIND, either express or implied. |
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | 19 | #include <stdlib.h> | |
20 | #include "button.h" | ||
21 | #include "config.h" | ||
22 | #include "sh7034.h" | ||
23 | #include "system.h" | ||
24 | #include "kernel.h" | ||
25 | #include "backlight.h" | ||
26 | #include "adc.h" | ||
27 | #include "lcd.h" | ||
20 | #include "serial.h" | 28 | #include "serial.h" |
21 | 29 | ||
22 | static int serial_byte,serial_flag; | 30 | /* Recieved byte identifiers */ |
31 | #define PLAY 0xC1 | ||
32 | #define STOP 0xC2 | ||
33 | #define PREV 0xC4 | ||
34 | #define NEXT 0xC8 | ||
35 | #define VOLUP 0xD0 | ||
36 | #define VOLDN 0xE0 | ||
23 | 37 | ||
24 | void serial_putc (char byte) | 38 | void serial_setup (void) |
25 | { | 39 | { |
26 | while (!(SSR1 & 0x80)); /* Wait for TDRE */ | 40 | char dummy; |
27 | TDR1 = byte; | 41 | int i; |
28 | SSR1 &= 0x80; /* Clear TDRE */ | 42 | int j; |
29 | } | 43 | dummy = SSR1; |
44 | SSR1=0; | ||
45 | SMR1 = 0x00; | ||
46 | SCR1=0; | ||
47 | BRR1 = (FREQ/(32*9600))-1; | ||
48 | |||
49 | /* let the hardware settle */ | ||
50 | for (i = 0; i < 1000; i++) | ||
51 | j++; | ||
52 | |||
53 | SCR1 = 0x50; | ||
54 | |||
55 | /* This enables the serial Rx interrupt*/ | ||
56 | IPRE = (IPRE & 0x0FFF) | 0x8000; /* Set to medium priority */ | ||
30 | 57 | ||
31 | void serial_puts (char const *string) | ||
32 | { | ||
33 | int byte; | ||
34 | while ((byte = *string++)) | ||
35 | serial_putc (byte); | ||
36 | } | 58 | } |
37 | 59 | ||
38 | int serial_getc( void ) | 60 | static void process_byte(char byte) |
39 | { | 61 | { |
40 | int byte; | 62 | int btn = 0; |
41 | while (!serial_flag); | 63 | |
42 | byte = serial_byte; | 64 | switch (byte) |
43 | serial_flag = 0; | 65 | { |
44 | serial_putc (byte); | 66 | case STOP: |
45 | return byte; | 67 | #ifdef HAVE_RECORDER_KEYPAD |
46 | } | 68 | btn = BUTTON_OFF; |
69 | #else | ||
70 | btn = BUTTON_STOP; | ||
71 | #endif | ||
72 | break; | ||
73 | |||
74 | case PLAY: | ||
75 | btn = BUTTON_PLAY; | ||
76 | break; | ||
77 | |||
78 | case VOLUP: | ||
79 | btn = BUTTON_VOL_UP; | ||
80 | break; | ||
81 | |||
82 | case VOLDN: | ||
83 | btn = BUTTON_VOL_DOWN; | ||
84 | break; | ||
85 | |||
86 | case PREV: | ||
87 | btn = BUTTON_LEFT; | ||
88 | break; | ||
89 | |||
90 | case NEXT: | ||
91 | btn = BUTTON_RIGHT; | ||
92 | break; | ||
93 | } | ||
47 | 94 | ||
48 | void serial_setup (int baudrate) | 95 | if ( btn ) { |
49 | { | 96 | queue_post(&button_queue, btn, NULL); |
50 | SCR1 = 0; | 97 | backlight_on(); |
51 | SSR1 = 0; | 98 | queue_post(&button_queue, btn | BUTTON_REL, NULL); |
52 | SMR1 = 0; | 99 | } |
53 | BRR1 = (FREQ/(32*baudrate))-1; | ||
54 | SCR1 = 0x70; | ||
55 | } | 100 | } |
56 | 101 | ||
57 | #pragma interrupt | 102 | #pragma interrupt |
58 | void REI1 (void) | 103 | void REI1 (void) |
59 | { | 104 | { |
60 | SSR1 &= 0x10; /* Clear FER */ | 105 | SSR1 = SSR1 & ~0x10; /* Clear FER */ |
106 | SSR1 = SSR1 & ~0x40; /* Clear RDRF */ | ||
61 | } | 107 | } |
62 | 108 | ||
63 | #pragma interrupt | 109 | #pragma interrupt |
64 | void RXI1 (void) | 110 | void RXI1 (void) |
65 | { | 111 | { |
112 | char serial_byte; | ||
66 | serial_byte = RDR1; | 113 | serial_byte = RDR1; |
67 | serial_flag = 1; | 114 | SSR1 = SSR1 & ~0x40; /* Clear RDRF */ |
68 | SSR1 &= 0x40; /* Clear RDRF */ | 115 | process_byte(serial_byte); |
69 | } | 116 | } |
diff --git a/firmware/drivers/serial.h b/firmware/drivers/serial.h index eac02e42e4..d13b785b9d 100644 --- a/firmware/drivers/serial.h +++ b/firmware/drivers/serial.h | |||
@@ -20,12 +20,6 @@ | |||
20 | #ifndef __SERIAL_H__ | 20 | #ifndef __SERIAL_H__ |
21 | #define __SERIAL_H__ | 21 | #define __SERIAL_H__ |
22 | 22 | ||
23 | #include <sh7034.h> | 23 | extern void serial_setup (void); |
24 | #include <system.h> | ||
25 | |||
26 | extern void serial_putc (char); | ||
27 | extern void serial_puts (char const *); | ||
28 | extern int serial_getc (void); | ||
29 | extern void serial_setup (int); | ||
30 | 24 | ||
31 | #endif | 25 | #endif |