diff options
-rw-r--r-- | apps/menus/display_menu.c | 10 | ||||
-rw-r--r-- | apps/plugins/lib/pluginlib_actions.c | 9 | ||||
-rw-r--r-- | apps/plugins/logo.c | 12 | ||||
-rw-r--r-- | apps/plugins/stats.c | 1 | ||||
-rw-r--r-- | apps/settings.c | 4 | ||||
-rw-r--r-- | firmware/export/config-mrobe500.h | 12 | ||||
-rw-r--r-- | firmware/export/config.h | 1 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c | 18 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c | 287 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-target.h | 45 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/power-mr500.c | 1 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/uart-dm320.c | 2 | ||||
-rwxr-xr-x | tools/configure | 2 |
13 files changed, 387 insertions, 17 deletions
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c index 60ed71cbd0..e5baf8ac1e 100644 --- a/apps/menus/display_menu.c +++ b/apps/menus/display_menu.c | |||
@@ -182,9 +182,11 @@ MENUITEM_SETTING(remote_contrast, | |||
182 | &global_settings.remote_contrast, NULL); | 182 | &global_settings.remote_contrast, NULL); |
183 | MENUITEM_SETTING(remote_invert, | 183 | MENUITEM_SETTING(remote_invert, |
184 | &global_settings.remote_invert, NULL); | 184 | &global_settings.remote_invert, NULL); |
185 | 185 | ||
186 | #ifdef HAVE_LCD_FLIP | ||
186 | MENUITEM_SETTING(remote_flip_display, | 187 | MENUITEM_SETTING(remote_flip_display, |
187 | &global_settings.remote_flip_display, flipdisplay_callback); | 188 | &global_settings.remote_flip_display, flipdisplay_callback); |
189 | #endif | ||
188 | 190 | ||
189 | #ifdef HAVE_REMOTE_LCD_TICKING | 191 | #ifdef HAVE_REMOTE_LCD_TICKING |
190 | static int ticking_callback(int action,const struct menu_item_ex *this_item) | 192 | static int ticking_callback(int action,const struct menu_item_ex *this_item) |
@@ -212,7 +214,11 @@ MAKE_MENU(lcd_remote_settings, ID2P(LANG_LCD_REMOTE_MENU), | |||
212 | &remote_backlight_on_button_hold, | 214 | &remote_backlight_on_button_hold, |
213 | #endif | 215 | #endif |
214 | &remote_caption_backlight, &remote_bl_filter_first_keypress, | 216 | &remote_caption_backlight, &remote_bl_filter_first_keypress, |
215 | &remote_contrast, &remote_invert, &remote_flip_display | 217 | &remote_contrast, &remote_invert |
218 | |||
219 | #ifdef HAVE_LCD_FLIP | ||
220 | ,&remote_flip_display | ||
221 | #endif | ||
216 | #ifdef HAVE_REMOTE_LCD_TICKING | 222 | #ifdef HAVE_REMOTE_LCD_TICKING |
217 | ,&remote_reduce_ticking | 223 | ,&remote_reduce_ticking |
218 | #endif | 224 | #endif |
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c index 773b1032bd..18c6851827 100644 --- a/apps/plugins/lib/pluginlib_actions.c +++ b/apps/plugins/lib/pluginlib_actions.c | |||
@@ -59,6 +59,15 @@ const struct button_mapping remote_directions[] = | |||
59 | { PLA_DOWN_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, | 59 | { PLA_DOWN_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, |
60 | { PLA_LEFT_REPEAT, BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_NONE}, | 60 | { PLA_LEFT_REPEAT, BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_NONE}, |
61 | { PLA_RIGHT_REPEAT, BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, | 61 | { PLA_RIGHT_REPEAT, BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, |
62 | #elif (CONFIG_REMOTE_KEYPAD == MROBE_REMOTE) | ||
63 | { PLA_UP, BUTTON_RC_PLAY, BUTTON_NONE}, | ||
64 | { PLA_DOWN, BUTTON_RC_DOWN, BUTTON_NONE}, | ||
65 | { PLA_LEFT, BUTTON_RC_REW, BUTTON_NONE}, | ||
66 | { PLA_RIGHT, BUTTON_RC_FF, BUTTON_NONE}, | ||
67 | { PLA_UP_REPEAT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE}, | ||
68 | { PLA_DOWN_REPEAT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE}, | ||
69 | { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE}, | ||
70 | { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE}, | ||
62 | #else | 71 | #else |
63 | #error pluginlib_actions: Unsupported remote keypad | 72 | #error pluginlib_actions: Unsupported remote keypad |
64 | #endif | 73 | #endif |
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c index 2ec1b38271..e61de014cc 100644 --- a/apps/plugins/logo.c +++ b/apps/plugins/logo.c | |||
@@ -122,10 +122,6 @@ const unsigned char rockbox16x7[] = { | |||
122 | 122 | ||
123 | #elif CONFIG_KEYPAD == MROBE500_PAD | 123 | #elif CONFIG_KEYPAD == MROBE500_PAD |
124 | #define LP_QUIT BUTTON_POWER | 124 | #define LP_QUIT BUTTON_POWER |
125 | #define LP_DEC_X BUTTON_LEFT | ||
126 | #define LP_INC_X BUTTON_RIGHT | ||
127 | #define LP_DEC_Y BUTTON_RC_DOWN | ||
128 | #define LP_INC_Y BUTTON_RC_PLAY | ||
129 | 125 | ||
130 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD | 126 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD |
131 | #define LP_QUIT BUTTON_BACK | 127 | #define LP_QUIT BUTTON_BACK |
@@ -191,7 +187,15 @@ const unsigned char rockbox16x7[] = { | |||
191 | #define LP_R_INC_X BUTTON_RC_FF | 187 | #define LP_R_INC_X BUTTON_RC_FF |
192 | #define LP_R_DEC_Y BUTTON_RC_SOURCE | 188 | #define LP_R_DEC_Y BUTTON_RC_SOURCE |
193 | #define LP_R_INC_Y BUTTON_RC_BITRATE | 189 | #define LP_R_INC_Y BUTTON_RC_BITRATE |
190 | |||
191 | #elif (CONFIG_REMOTE_KEYPAD==MROBE_REMOTE) | ||
192 | #define LP_R_QUIT BUTTON_RC_HEART | ||
193 | #define LP_R_DEC_X BUTTON_RC_REW | ||
194 | #define LP_R_INC_X BUTTON_RC_FF | ||
195 | #define LP_R_DEC_Y BUTTON_RC_DOWN | ||
196 | #define LP_R_INC_Y BUTTON_RC_PLAY | ||
194 | #endif | 197 | #endif |
198 | |||
195 | #endif /* CONFIG_REMOTE_KEYPAD */ | 199 | #endif /* CONFIG_REMOTE_KEYPAD */ |
196 | 200 | ||
197 | #ifdef HAVE_TOUCHSCREEN | 201 | #ifdef HAVE_TOUCHSCREEN |
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c index 659f3e6763..976fd262f8 100644 --- a/apps/plugins/stats.c +++ b/apps/plugins/stats.c | |||
@@ -68,6 +68,7 @@ static bool abort; | |||
68 | 68 | ||
69 | #elif CONFIG_KEYPAD == MROBE500_PAD | 69 | #elif CONFIG_KEYPAD == MROBE500_PAD |
70 | #define STATS_STOP BUTTON_POWER | 70 | #define STATS_STOP BUTTON_POWER |
71 | #define STATS_STOP_REMOTE BUTTON_RC_DOWN | ||
71 | 72 | ||
72 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD | 73 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD |
73 | #define STATS_STOP BUTTON_BACK | 74 | #define STATS_STOP BUTTON_BACK |
diff --git a/apps/settings.c b/apps/settings.c index 4db4f4405c..598e39e7ab 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -742,7 +742,11 @@ void settings_apply(bool read_disk) | |||
742 | #ifdef HAVE_REMOTE_LCD | 742 | #ifdef HAVE_REMOTE_LCD |
743 | lcd_remote_set_contrast(global_settings.remote_contrast); | 743 | lcd_remote_set_contrast(global_settings.remote_contrast); |
744 | lcd_remote_set_invert_display(global_settings.remote_invert); | 744 | lcd_remote_set_invert_display(global_settings.remote_invert); |
745 | |||
746 | #ifdef HAVE_LCD_FLIP | ||
745 | lcd_remote_set_flip(global_settings.remote_flip_display); | 747 | lcd_remote_set_flip(global_settings.remote_flip_display); |
748 | #endif | ||
749 | |||
746 | lcd_remote_scroll_speed(global_settings.remote_scroll_speed); | 750 | lcd_remote_scroll_speed(global_settings.remote_scroll_speed); |
747 | lcd_remote_scroll_step(global_settings.remote_scroll_step); | 751 | lcd_remote_scroll_step(global_settings.remote_scroll_step); |
748 | lcd_remote_scroll_delay(global_settings.remote_scroll_delay); | 752 | lcd_remote_scroll_delay(global_settings.remote_scroll_delay); |
diff --git a/firmware/export/config-mrobe500.h b/firmware/export/config-mrobe500.h index 939f09cb89..4010b036d1 100644 --- a/firmware/export/config-mrobe500.h +++ b/firmware/export/config-mrobe500.h | |||
@@ -89,13 +89,21 @@ | |||
89 | #define HAVE_LCD_SLEEP | 89 | #define HAVE_LCD_SLEEP |
90 | 90 | ||
91 | /* remote LCD */ | 91 | /* remote LCD */ |
92 | //#define HAVE_REMOTE_LCD | 92 | #define HAVE_REMOTE_LCD |
93 | #define LCD_REMOTE_WIDTH 79 | 93 | #define LCD_REMOTE_WIDTH 79 |
94 | #define LCD_REMOTE_HEIGHT 16 | 94 | #define LCD_REMOTE_HEIGHT 64 |
95 | #define LCD_REMOTE_DEPTH 1 | 95 | #define LCD_REMOTE_DEPTH 1 |
96 | 96 | ||
97 | /* Remote display colours, for screenshots and sim (0xRRGGBB) */ | ||
98 | #define LCD_REMOTE_DARKCOLOR 0x000000 | ||
99 | #define LCD_REMOTE_BRIGHTCOLOR 0x5a915a | ||
100 | #define LCD_REMOTE_BL_DARKCOLOR 0x000000 | ||
101 | #define LCD_REMOTE_BL_BRIGHTCOLOR 0x82b4fa | ||
102 | |||
97 | #define LCD_REMOTE_PIXELFORMAT VERTICAL_PACKING | 103 | #define LCD_REMOTE_PIXELFORMAT VERTICAL_PACKING |
98 | 104 | ||
105 | #define CONFIG_REMOTE_KEYPAD MROBE_REMOTE | ||
106 | |||
99 | #define MIN_REMOTE_CONTRAST_SETTING 0 | 107 | #define MIN_REMOTE_CONTRAST_SETTING 0 |
100 | #define MAX_REMOTE_CONTRAST_SETTING 15 | 108 | #define MAX_REMOTE_CONTRAST_SETTING 15 |
101 | #define DEFAULT_REMOTE_CONTRAST_SETTING 7 | 109 | #define DEFAULT_REMOTE_CONTRAST_SETTING 7 |
diff --git a/firmware/export/config.h b/firmware/export/config.h index ac60e9660e..17b3c1cdea 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h | |||
@@ -114,6 +114,7 @@ | |||
114 | #define H100_REMOTE 1 | 114 | #define H100_REMOTE 1 |
115 | #define H300_REMOTE 2 | 115 | #define H300_REMOTE 2 |
116 | #define X5_REMOTE 3 | 116 | #define X5_REMOTE 3 |
117 | #define MROBE_REMOTE 4 | ||
117 | 118 | ||
118 | /* CONFIG_BACKLIGHT_FADING */ | 119 | /* CONFIG_BACKLIGHT_FADING */ |
119 | /* No fading capabilities at all (yet) */ | 120 | /* No fading capabilities at all (yet) */ |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c index 3e5be7c22f..bc163b1070 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c | |||
@@ -128,12 +128,6 @@ inline bool button_hold(void) | |||
128 | return false; | 128 | return false; |
129 | } | 129 | } |
130 | 130 | ||
131 | static void remote_heartbeat(void) | ||
132 | { | ||
133 | char data[5] = {0x11, 0x30, 0x11^0x30, 0x11+0x30, '\0'}; | ||
134 | uart1_puts(data, 5); | ||
135 | } | ||
136 | |||
137 | #define TOUCH_MARGIN 8 | 131 | #define TOUCH_MARGIN 8 |
138 | char r_buffer[5]; | 132 | char r_buffer[5]; |
139 | int r_button = BUTTON_NONE; | 133 | int r_button = BUTTON_NONE; |
@@ -142,13 +136,14 @@ int button_read_device(int *data) | |||
142 | int retval, calbuf; | 136 | int retval, calbuf; |
143 | static int oldbutton = BUTTON_NONE; | 137 | static int oldbutton = BUTTON_NONE; |
144 | 138 | ||
139 | static long last_touch = 0; | ||
140 | |||
145 | r_button=BUTTON_NONE; | 141 | r_button=BUTTON_NONE; |
146 | *data = 0; | 142 | *data = 0; |
147 | 143 | ||
148 | if (touch_available) | 144 | if (touch_available) |
149 | { | 145 | { |
150 | short x,y; | 146 | short x,y; |
151 | static long last_touch = 0; | ||
152 | bool send_touch = false; | 147 | bool send_touch = false; |
153 | tsc2100_read_values(&x, &y, &last_z1, &last_z2); | 148 | tsc2100_read_values(&x, &y, &last_z1, &last_z2); |
154 | if (TIME_BEFORE(last_touch + HZ/5, current_tick)) | 149 | if (TIME_BEFORE(last_touch + HZ/5, current_tick)) |
@@ -175,7 +170,14 @@ int button_read_device(int *data) | |||
175 | last_touch = current_tick; | 170 | last_touch = current_tick; |
176 | touch_available = false; | 171 | touch_available = false; |
177 | } | 172 | } |
178 | remote_heartbeat(); | 173 | else |
174 | { | ||
175 | /* Touch hasn't happened in a while, clear the bits */ | ||
176 | if(last_touch+3>current_tick) | ||
177 | { | ||
178 | oldbutton&=(0xFF); | ||
179 | } | ||
180 | } | ||
179 | 181 | ||
180 | if ((IO_GIO_BITSET0&0x01) == 0) | 182 | if ((IO_GIO_BITSET0&0x01) == 0) |
181 | { | 183 | { |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c new file mode 100644 index 0000000000..5cdc00ce6a --- /dev/null +++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c | |||
@@ -0,0 +1,287 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id: $ | ||
9 | * | ||
10 | * Copyright (C) 2009 Karl Kurbjun | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #include "config.h" | ||
23 | #include "system.h" | ||
24 | #include "file.h" | ||
25 | #include "lcd-remote.h" | ||
26 | #include "adc.h" | ||
27 | #include "scroll_engine.h" | ||
28 | #include "uart-target.h" | ||
29 | |||
30 | static enum remote_control_states | ||
31 | { | ||
32 | REMOTE_CONTROL_IDLE, | ||
33 | REMOTE_CONTROL_NOP, | ||
34 | REMOTE_CONTROL_POWER, | ||
35 | REMOTE_CONTROL_MASK, | ||
36 | REMOTE_CONTROL_DRAW1, | ||
37 | REMOTE_CONTROL_DRAW_PAUSE1, | ||
38 | REMOTE_CONTROL_DRAW2, | ||
39 | REMOTE_CONTROL_DRAW_PAUSE2, | ||
40 | REMOTE_CONTROL_SLEEP | ||
41 | } remote_state_control = REMOTE_CONTROL_NOP; | ||
42 | |||
43 | bool remote_initialized=true; | ||
44 | |||
45 | unsigned char remote_contrast=DEFAULT_REMOTE_CONTRAST_SETTING; | ||
46 | unsigned char remote_power=0x00; | ||
47 | |||
48 | /*** hardware configuration ***/ | ||
49 | |||
50 | int lcd_remote_default_contrast(void) | ||
51 | { | ||
52 | return DEFAULT_REMOTE_CONTRAST_SETTING; | ||
53 | } | ||
54 | |||
55 | void lcd_remote_sleep(void) | ||
56 | { | ||
57 | remote_state_control=REMOTE_CONTROL_SLEEP; | ||
58 | } | ||
59 | |||
60 | void lcd_remote_powersave(bool on) | ||
61 | { | ||
62 | if(on) | ||
63 | { | ||
64 | remote_power|=0xC0; | ||
65 | remote_state_control=REMOTE_CONTROL_POWER; | ||
66 | } | ||
67 | else | ||
68 | { | ||
69 | remote_power&=~(0xC0); | ||
70 | remote_state_control=REMOTE_CONTROL_POWER; | ||
71 | } | ||
72 | } | ||
73 | |||
74 | void lcd_remote_set_contrast(int val) | ||
75 | { | ||
76 | remote_contrast=(char)val; | ||
77 | remote_state_control=REMOTE_CONTROL_POWER; | ||
78 | } | ||
79 | |||
80 | void lcd_remote_set_invert_display(bool yesno) | ||
81 | { | ||
82 | (void)yesno; | ||
83 | } | ||
84 | |||
85 | /* turn the display upside down (call lcd_remote_update() afterwards) */ | ||
86 | void lcd_remote_set_flip(bool yesno) | ||
87 | { | ||
88 | (void)yesno; | ||
89 | } | ||
90 | |||
91 | bool remote_detect(void) | ||
92 | { | ||
93 | return true; | ||
94 | } | ||
95 | |||
96 | void lcd_remote_on(void) | ||
97 | { | ||
98 | remote_power|=0x80; | ||
99 | remote_state_control=REMOTE_CONTROL_POWER; | ||
100 | } | ||
101 | |||
102 | void lcd_remote_off(void) | ||
103 | { | ||
104 | remote_power&=~(0x80); | ||
105 | remote_state_control=REMOTE_CONTROL_POWER; | ||
106 | } | ||
107 | |||
108 | unsigned char lcd_remote_test[16]= | ||
109 | {0x80,0xFF,0x80,0x00,0xFF,0x89,0x89,0x00,0xC1,0x89,0x8F,0x80,0xFF,0x80,0,0}; | ||
110 | |||
111 | /* Monitor remote hotswap */ | ||
112 | static void remote_tick(void) | ||
113 | { | ||
114 | unsigned char i; | ||
115 | unsigned char remote_payload[10], remote_payload_size; | ||
116 | unsigned char remote_check_xor, remote_check_sum; | ||
117 | |||
118 | switch (remote_state_control) | ||
119 | { | ||
120 | case REMOTE_CONTROL_IDLE: | ||
121 | |||
122 | remote_payload_size=0; | ||
123 | remote_state_control=REMOTE_CONTROL_IDLE; | ||
124 | break; | ||
125 | case REMOTE_CONTROL_NOP: | ||
126 | remote_payload[0]=0x11; | ||
127 | remote_payload[1]=0x30; | ||
128 | |||
129 | remote_payload_size=2; | ||
130 | remote_state_control=REMOTE_CONTROL_NOP; | ||
131 | break; | ||
132 | case REMOTE_CONTROL_POWER: | ||
133 | remote_payload[0]=0x31; | ||
134 | remote_payload[1]=remote_power; | ||
135 | remote_payload[2]=remote_contrast; | ||
136 | |||
137 | remote_payload_size=3; | ||
138 | remote_state_control=REMOTE_CONTROL_NOP; | ||
139 | break; | ||
140 | case REMOTE_CONTROL_MASK: | ||
141 | remote_payload[0]=0x41; | ||
142 | remote_payload[1]=0x94; | ||
143 | |||
144 | remote_payload_size=2; | ||
145 | remote_state_control=REMOTE_CONTROL_NOP; | ||
146 | break; | ||
147 | case REMOTE_CONTROL_DRAW1: | ||
148 | remote_payload[0]=0x51; | ||
149 | remote_payload[1]=0x80; | ||
150 | remote_payload[2]=14; | ||
151 | remote_payload[3]=0; | ||
152 | remote_payload[4]=0; | ||
153 | remote_payload[5]=14; | ||
154 | remote_payload[6]=8; | ||
155 | |||
156 | remote_payload_size=7; | ||
157 | remote_state_control=REMOTE_CONTROL_DRAW_PAUSE1; | ||
158 | break; | ||
159 | case REMOTE_CONTROL_DRAW_PAUSE1: | ||
160 | remote_payload[0]=0x11; | ||
161 | remote_payload[1]=0x30; | ||
162 | |||
163 | remote_payload_size=2; | ||
164 | remote_state_control=REMOTE_CONTROL_DRAW2; | ||
165 | break; | ||
166 | case REMOTE_CONTROL_DRAW2: | ||
167 | remote_payload[0]=0x51; | ||
168 | remote_payload[1]=0x80; | ||
169 | remote_payload[2]=14; | ||
170 | remote_payload[3]=0; | ||
171 | remote_payload[4]=8; | ||
172 | remote_payload[5]=14; | ||
173 | remote_payload[6]=16; | ||
174 | |||
175 | remote_payload_size=7; | ||
176 | remote_state_control=REMOTE_CONTROL_DRAW_PAUSE2; | ||
177 | break; | ||
178 | case REMOTE_CONTROL_DRAW_PAUSE2: | ||
179 | remote_payload[0]=0x11; | ||
180 | remote_payload[1]=0x30; | ||
181 | |||
182 | remote_payload_size=2; | ||
183 | remote_state_control=REMOTE_CONTROL_NOP; | ||
184 | break; | ||
185 | case REMOTE_CONTROL_SLEEP: | ||
186 | remote_payload[0]=0x71; | ||
187 | remote_payload[1]=0x30; | ||
188 | |||
189 | remote_payload_size=2; | ||
190 | remote_state_control=REMOTE_CONTROL_IDLE; | ||
191 | break; | ||
192 | default: | ||
193 | remote_payload_size=0; | ||
194 | break; | ||
195 | } | ||
196 | |||
197 | if(remote_payload_size==0) | ||
198 | { | ||
199 | return; | ||
200 | } | ||
201 | |||
202 | remote_check_xor=remote_payload[0]; | ||
203 | remote_check_sum=remote_payload[0]; | ||
204 | for(i=1; i<remote_payload_size; i++) | ||
205 | { | ||
206 | remote_check_xor^=remote_payload[i]; | ||
207 | remote_check_sum+=remote_payload[i]; | ||
208 | } | ||
209 | |||
210 | if(remote_payload[0]==0x51) | ||
211 | { | ||
212 | unsigned char offset; | ||
213 | unsigned char x; | ||
214 | |||
215 | if(remote_payload[4]==8) | ||
216 | { | ||
217 | offset=79; | ||
218 | } | ||
219 | else | ||
220 | { | ||
221 | offset=0; | ||
222 | } | ||
223 | |||
224 | for (x = 0; x < 14; x++) | ||
225 | { | ||
226 | remote_check_xor^=lcd_remote_test[x]; | ||
227 | remote_check_sum+=lcd_remote_test[x]; | ||
228 | } | ||
229 | |||
230 | uart1_puts(remote_payload, remote_payload_size); | ||
231 | lcd_remote_test[14]=remote_check_xor; | ||
232 | lcd_remote_test[15]=remote_check_sum; | ||
233 | uart1_puts(lcd_remote_test, 16); | ||
234 | } | ||
235 | else | ||
236 | { | ||
237 | remote_payload[remote_payload_size]=remote_check_xor; | ||
238 | remote_payload[remote_payload_size+1]=remote_check_sum; | ||
239 | |||
240 | uart1_puts(remote_payload, remote_payload_size+2); | ||
241 | } | ||
242 | } | ||
243 | |||
244 | void lcd_remote_init_device(void) | ||
245 | { | ||
246 | lcd_remote_clear_display(); | ||
247 | if (remote_detect()) | ||
248 | lcd_remote_on(); | ||
249 | |||
250 | /* put the remote control in the tick task */ | ||
251 | tick_add_task(remote_tick); | ||
252 | } | ||
253 | |||
254 | /* Update the display. | ||
255 | This must be called after all other LCD functions that change the display. */ | ||
256 | void lcd_remote_update(void) | ||
257 | { | ||
258 | if(remote_state_control!=REMOTE_CONTROL_DRAW1 | ||
259 | && remote_state_control!=REMOTE_CONTROL_DRAW_PAUSE1 | ||
260 | && remote_state_control!=REMOTE_CONTROL_DRAW2 | ||
261 | && remote_state_control!=REMOTE_CONTROL_DRAW_PAUSE2) | ||
262 | { | ||
263 | remote_state_control=REMOTE_CONTROL_DRAW1; | ||
264 | } | ||
265 | } | ||
266 | |||
267 | /* Update a fraction of the display. */ | ||
268 | void lcd_remote_update_rect(int x, int y, int width, int height) | ||
269 | { | ||
270 | (void)x; | ||
271 | (void)y; | ||
272 | (void)width; | ||
273 | (void)height; | ||
274 | lcd_remote_update(); | ||
275 | } | ||
276 | |||
277 | void _remote_backlight_on(void) | ||
278 | { | ||
279 | remote_power|=0x40; | ||
280 | remote_state_control=REMOTE_CONTROL_POWER; | ||
281 | } | ||
282 | |||
283 | void _remote_backlight_off(void) | ||
284 | { | ||
285 | remote_power&=~(0x40); | ||
286 | remote_state_control=REMOTE_CONTROL_POWER; | ||
287 | } | ||
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-target.h b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-target.h new file mode 100644 index 0000000000..bf52e80238 --- /dev/null +++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-target.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id: $ | ||
9 | * | ||
10 | * Copyright (C) 2009 by Karl Kurbjun | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | #ifndef LCD_REMOTE_TARGET_H | ||
22 | #define LCD_REMOTE_TARGET_H | ||
23 | |||
24 | #define REMOTE_INIT_LCD 1 | ||
25 | #define REMOTE_DEINIT_LCD 2 | ||
26 | |||
27 | void lcd_remote_powersave(bool on); | ||
28 | void lcd_remote_set_invert_display(bool yesno); | ||
29 | //void lcd_remote_set_flip(bool yesno); | ||
30 | |||
31 | bool remote_detect(void); | ||
32 | void lcd_remote_init_device(void); | ||
33 | void lcd_remote_on(void); | ||
34 | void lcd_remote_off(void); | ||
35 | void lcd_remote_update(void); | ||
36 | void lcd_remote_update_rect(int, int, int, int); | ||
37 | |||
38 | void _remote_backlight_on(void); | ||
39 | void _remote_backlight_off(void); | ||
40 | |||
41 | extern bool remote_initialized; | ||
42 | |||
43 | void lcd_remote_sleep(void); | ||
44 | |||
45 | #endif | ||
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/power-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/power-mr500.c index 9fd976ec10..777856dcfc 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/power-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/power-mr500.c | |||
@@ -72,6 +72,7 @@ void power_off(void) | |||
72 | { | 72 | { |
73 | /* turn off backlight and wait for 1 second */ | 73 | /* turn off backlight and wait for 1 second */ |
74 | _backlight_off(); | 74 | _backlight_off(); |
75 | lcd_remote_sleep(); | ||
75 | lcd_sleep(); | 76 | lcd_sleep(); |
76 | sleep(HZ); | 77 | sleep(HZ); |
77 | /* Hard shutdown */ | 78 | /* Hard shutdown */ |
diff --git a/firmware/target/arm/tms320dm320/uart-dm320.c b/firmware/target/arm/tms320dm320/uart-dm320.c index 81076e81f2..5e2ad5e2be 100644 --- a/firmware/target/arm/tms320dm320/uart-dm320.c +++ b/firmware/target/arm/tms320dm320/uart-dm320.c | |||
@@ -123,7 +123,7 @@ void UART1(void) | |||
123 | panicf("UART1 buffer overflow"); | 123 | panicf("UART1 buffer overflow"); |
124 | else | 124 | else |
125 | { | 125 | { |
126 | if(uart1_recieve_write==RECIEVE_RING_SIZE) | 126 | if(uart1_recieve_write>=RECIEVE_RING_SIZE) |
127 | uart1_recieve_write=0; | 127 | uart1_recieve_write=0; |
128 | 128 | ||
129 | uart1_recieve_buffer_ring[uart1_recieve_write] = IO_UART1_DTRR & 0xff; | 129 | uart1_recieve_buffer_ring[uart1_recieve_write] = IO_UART1_DTRR & 0xff; |
diff --git a/tools/configure b/tools/configure index 905a777b58..44ae3e524f 100755 --- a/tools/configure +++ b/tools/configure | |||
@@ -1459,6 +1459,8 @@ fi | |||
1459 | tool="$rootdir/tools/scramble -add=m500" | 1459 | tool="$rootdir/tools/scramble -add=m500" |
1460 | bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" | 1460 | bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" |
1461 | bmp2rb_native="$rootdir/tools/bmp2rb -f 4" | 1461 | bmp2rb_native="$rootdir/tools/bmp2rb -f 4" |
1462 | bmp2rb_remotemono="$rootdir/tools/bmp2rb -f 0" | ||
1463 | bmp2rb_remotenative="$rootdir/tools/bmp2rb -f 0" | ||
1462 | output="rockbox.mrobe500" | 1464 | output="rockbox.mrobe500" |
1463 | appextra="recorder:gui" | 1465 | appextra="recorder:gui" |
1464 | plugins="yes" | 1466 | plugins="yes" |