remote.c
2.16 KB
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
/*
* remote.c
*
* Created on: 2019-9-24
* Author: Windowns
*/
#include "c_def.h"
#include "debug.h"
#include "oem.h"
#ifdef REMOTE_ENABLE
#include "regmap.h"
//#include "interrupt.h"
//#include "hw_gpio.h"
//#include "hw_timer.h"
#include "app_timer.h"
//#include "app_gpio.h"
#include "remote.h"
#include "message.h"
#include "key_scan.h"
#include "app_main.h"
//#include "oem_string.h"
//#include <string.h>
#include "app_key.h"
//#include "app_ver.h"
//#include "hw_pll.h"
#include "mem_reloc.h"
void app_ir_keypress(U32 key_val) __INTERNAL_RAM_TEXT;
void app_ir_buf_recive(U32 buffer) __INTERNAL_RAM_TEXT;
volatile U32 remote_data;
volatile U32 remote_key;
U8 remote_key_state;
volatile U8 remote_repeat_valid;
volatile U8 remote_state;
void Remote_Init(void)
{
remote_data = APP_KEY_INVALID;
remote_key = APP_KEY_INVALID;
remote_key_state = KEY_UP;
remote_repeat_valid = FALSE;
remote_state = RC_IDLE;
}
void app_ir_buf_recive(U32 buffer)
{
int buf[4];
int time[4];
int level[4];
int i;
static U32 cumulative_time =0;
static int pre_level=0;
buf[0]=buf[1]=buf[2]=buf[3]=0xFF;
for(i=0;i<4;i++)
{
buf[i] &= (buffer>>(i*8));
level[i] = buf[i] & 0x80;
time[i] = buf[i] & 0x7F;
if((cumulative_time != 0)&&(pre_level != level[i]))
{
app_ir_message_send(pre_level,cumulative_time);
cumulative_time = 0;
}
cumulative_time += time[i];
if(time[i] < 0x7F)
{
app_ir_message_send(level[i],cumulative_time);
cumulative_time = 0;
}
else
{
pre_level = level[i];
}
}
}
void app_ir_keypress(U32 key_val)
{
#ifndef REMOTE_DEBUG
U32 rmt_key;
U32 temp;
U8 i;
if (timer_data.remoteKeyUpTimer)
{
if (remote_key_state == KEY_DOWN)
{
//remote_key_state = KEY_UP;
//uMsgSend (UI_REMOTE_KEY, KEY_UP, remote_key);
//DBG_RMTPrintf("RMT:key up 0x%x\n\r", remote_key);
}
}
remote_key = key_val;
//remote key TO map key
vRemoteMapMainKey((U32 *)&remote_key);
remote_key = remote_key_to_app_key(remote_key);
rmt_key = remote_key;
remote_key_state = KEY_DOWN;
uiMsgSend(UI_REMOTE_KEY, KEY_DOWN, rmt_key);
app_timer_remoteKeyUpTimer_set(150);
DBG_RMTPrintf("RMT:key down 0x%x\n\r", rmt_key);
#endif
}
#endif