Subversion Repositories freemyipod

Rev

Rev 835 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 835 Rev 841
Line 135... Line 135...
135
    oldtouched = false;
135
    oldtouched = false;
136
    oldbuttons = 0;
136
    oldbuttons = 0;
137
    lastpacket = 0;
137
    lastpacket = 0;
138
    collect = 0;
138
    collect = 0;
139
    lastdiff = 0;
139
    lastdiff = 0;
140
    interrupt_enable(IRQ_WHEEL, true);
-
 
141
    PUNA(2) &= ~2;
-
 
142
    PCON(14) = (PCON(14) & ~0xffff0000) | 0x22220000;
140
    PCON(14) = (PCON(14) & ~0xffff0000) | 0x22220000;
-
 
141
    PUNA(2) &= ~2;
143
    WHEELINT = 7;
142
    WHEELINT = 7;
144
    WHEEL10 = 7;
143
    WHEEL10 = 1;
145
    WHEEL00 = 0x380000;
144
    interrupt_enable(IRQ_WHEEL, true);
146
    WHEEL08 = 0x20000;
145
    WHEEL08 = 0x20000;
147
    do
-
 
148
    {
-
 
149
        WHEELTX = 0x8001052A;
146
    WHEEL00 = 0x380000;
150
        while (WHEEL0C & 4) yield();
147
    while (WHEEL0C & 4) yield();
151
        WHEEL04 = 1;
-
 
152
        sleep(20000);
148
    WHEELTX = 0x8000023A;
153
    }
-
 
154
    while (WHEEL0C & 4);
149
    WHEEL04 |= 1;
155
    thread_create(&clickwheel_thread_handle, "Clickwheel dispatcher",
150
    thread_create(&clickwheel_thread_handle, "Clickwheel dispatcher", clickwheel_thread,
156
                  clickwheel_thread, clickwheel_stack,
-
 
157
                  sizeof(clickwheel_stack), OS_THREAD, 200, true,
151
                  clickwheel_stack, sizeof(clickwheel_stack), OS_THREAD, 200, true,
158
                  NULL, NULL, NULL, NULL);
152
                  NULL, NULL, NULL, NULL);
159
}
153
}
160
 
154
 
161
void INT_WHEEL(void) ICODE_ATTR;
155
void INT_WHEEL(void) ICODE_ATTR;
162
void INT_WHEEL()
156
void INT_WHEEL()
163
{
157
{
164
    uint32_t events = WHEELINT;
158
    uint32_t events = WHEELINT;
165
    if (events & 4) WHEELINT = 4;
-
 
166
    if (events & 2) WHEELINT = 2;
-
 
167
    if (events & 1)
159
    if (events & 1)
168
    {
160
    {
169
        clickwheel_packet = WHEELRX;
161
        clickwheel_packet = WHEELRX;
170
        wakeup_signal(&clickwheel_wakeup);
162
        wakeup_signal(&clickwheel_wakeup);
171
        WHEELINT = 1;
-
 
172
    }
163
    }
-
 
164
    WHEELINT = events;
173
}
165
}
174
 
166
 
175
uint32_t clickwheel_get_state()
167
uint32_t clickwheel_get_state()
176
{
168
{
177
    return (oldtouched << 15) | (oldpos << 8) | oldbuttons;
169
    return (oldtouched << 15) | (oldpos << 8) | oldbuttons;