Subversion Repositories HomeAutomation

Rev

Rev 1516 | Rev 1524 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1516 Rev 1518
Line 190... Line 190...
190
}
190
}
191
#endif 
191
#endif 
192
 
192
 
193
void sns_input_Init(void)
193
void sns_input_Init(void)
194
{
194
{
195
 
-
 
196
#if sns_input_CH0PCA95xxIO==1 |sns_input_CH1PCA95xxIO==1 | sns_input_CH2PCA95xxIO==1 | sns_input_CH3PCA95xxIO==1 | sns_input_CH4PCA95xxIO==1 | sns_input_CH5PCA95xxIO==1 | sns_input_CH6PCA95xxIO==1 | sns_input_CH7PCA95xxIO==1
-
 
197
    Pca95xx_Init(0);
-
 
198
    /* Currently only polling of ports is implemented */
-
 
199
    //Pca95xx_SetCallback(sns_input_PCA95XX_CALLBACK_INDEX, &sns_input_PCA95xx_callback);
-
 
200
    Timer_SetTimeout(sns_input_PCA95XX_POLL_TIMER, sns_input_PCA95XX_POLL_TIME_MS, TimerTypeFreeRunning, 0);
-
 
201
#endif 
-
 
202
 
-
 
203
    pinStatus[0] = NOCHANGE;
195
    pinStatus[0] = NOCHANGE;
204
    pinStatus[1] = NOCHANGE;
196
    pinStatus[1] = NOCHANGE;
205
    pinStatus[2] = NOCHANGE;
197
    pinStatus[2] = NOCHANGE;
206
    pinStatus[3] = NOCHANGE;
198
    pinStatus[3] = NOCHANGE;
207
    pinStatus[4] = NOCHANGE;
199
    pinStatus[4] = NOCHANGE;
208
    pinStatus[5] = NOCHANGE;
200
    pinStatus[5] = NOCHANGE;
209
    pinStatus[6] = NOCHANGE;
201
    pinStatus[6] = NOCHANGE;
210
    pinStatus[7] = NOCHANGE;
202
    pinStatus[7] = NOCHANGE;
211
    uint8_t index = 0;
203
    uint8_t index = 0;
-
 
204
 
-
 
205
#if sns_input_CH0PCA95xxIO==1 |sns_input_CH1PCA95xxIO==1 | sns_input_CH2PCA95xxIO==1 | sns_input_CH3PCA95xxIO==1 | sns_input_CH4PCA95xxIO==1 | sns_input_CH5PCA95xxIO==1 | sns_input_CH6PCA95xxIO==1 | sns_input_CH7PCA95xxIO==1
-
 
206
    Pca95xx_Init(0);
-
 
207
#endif 
-
 
208
 
212
#ifdef  sns_input_CH0
209
#ifdef  sns_input_CH0
213
#if sns_input_CH0PCA95xxIO==0
210
#if sns_input_CH0PCA95xxIO==0
214
    #if (sns_input_CH0_pullup == 1)
211
    #if (sns_input_CH0_pullup == 1)
215
        gpio_set_pullup(sns_input_CH0);
212
        gpio_set_pullup(sns_input_CH0);
216
    #else
213
    #else
Line 253... Line 250...
253
#endif
250
#endif
254
#ifdef  sns_input_CH3
251
#ifdef  sns_input_CH3
255
#if sns_input_CH3PCA95xxIO==0
252
#if sns_input_CH3PCA95xxIO==0
256
    #if (sns_input_CH3_pullup == 1)
253
    #if (sns_input_CH3_pullup == 1)
257
        gpio_set_pullup(sns_input_CH3);
254
        gpio_set_pullup(sns_input_CH3);
258
    #else
255
    #else
259
        gpio_clr_pullup(sns_input_CH3);
256
        gpio_clr_pullup(sns_input_CH3);
260
    #endif      
257
    #endif      
261
        gpio_set_in(sns_input_CH3);
258
        gpio_set_in(sns_input_CH3);
262
        Pcint_SetCallbackPin(sns_input_PCINT_CH3, sns_input_CH3, &sns_input_pcint_callback);
259
        Pcint_SetCallbackPin(sns_input_PCINT_CH3, sns_input_CH3, &sns_input_pcint_callback);
263
#else
260
#else
264
        Pca95xx_set_in(sns_input_CH3);
261
        Pca95xx_set_in(sns_input_CH3);
265
#endif
262
#endif
Line 269... Line 266...
269
#if sns_input_CH4PCA95xxIO==0
266
#if sns_input_CH4PCA95xxIO==0
270
    #if (sns_input_CH4_pullup == 1)
267
    #if (sns_input_CH4_pullup == 1)
271
        gpio_set_pullup(sns_input_CH4);
268
        gpio_set_pullup(sns_input_CH4);
272
    #else
269
    #else
273
        gpio_clr_pullup(sns_input_CH4);
270
        gpio_clr_pullup(sns_input_CH4);
274
    #endif      
271
    #endif      
275
        gpio_set_in(sns_input_CH4);
272
        gpio_set_in(sns_input_CH4);
276
        Pcint_SetCallbackPin(sns_input_PCINT_CH4, sns_input_CH4, &sns_input_pcint_callback);
273
        Pcint_SetCallbackPin(sns_input_PCINT_CH4, sns_input_CH4, &sns_input_pcint_callback);
277
#else
274
#else
278
        Pca95xx_set_in(sns_input_CH4);
275
        Pca95xx_set_in(sns_input_CH4);
279
#endif
276
#endif
Line 318... Line 315...
318
        Pcint_SetCallbackPin(sns_input_PCINT_CH7, sns_input_CH7, &sns_input_pcint_callback);
315
        Pcint_SetCallbackPin(sns_input_PCINT_CH7, sns_input_CH7, &sns_input_pcint_callback);
319
#else
316
#else
320
        Pca95xx_set_in(sns_input_CH7);
317
        Pca95xx_set_in(sns_input_CH7);
321
#endif
318
#endif
322
        index++;
319
        index++;
-
 
320
#endif
-
 
321
 
-
 
322
#if sns_input_CH0PCA95xxIO==1 |sns_input_CH1PCA95xxIO==1 | sns_input_CH2PCA95xxIO==1 | sns_input_CH3PCA95xxIO==1 | sns_input_CH4PCA95xxIO==1 | sns_input_CH5PCA95xxIO==1 | sns_input_CH6PCA95xxIO==1 | sns_input_CH7PCA95xxIO==1
-
 
323
    sns_input_setPCA95xxPinStatus();
-
 
324
    /* Currently only polling of ports is implemented */
-
 
325
    //Pca95xx_SetCallback(sns_input_PCA95XX_CALLBACK_INDEX, &sns_input_PCA95xx_callback);
-
 
326
    Timer_SetTimeout(sns_input_PCA95XX_POLL_TIMER, sns_input_PCA95XX_POLL_TIME_MS, TimerTypeFreeRunning, 0);
323
#endif
327
#endif 
324
 
328
 
325
}
329
}
326
 
330
 
327
void sns_input_Process(void)
331
void sns_input_Process(void)
Line 354... Line 358...
354
    if (Timer_Expired(sns_input_PCA95XX_POLL_TIMER))
358
    if (Timer_Expired(sns_input_PCA95XX_POLL_TIMER))
355
    {
359
    {
356
        uint16_t status = Pca95xx_GetInputs();
360
        uint16_t status = Pca95xx_GetInputs();
357
#ifdef  sns_input_CH0
361
#ifdef  sns_input_CH0
358
#if sns_input_CH0PCA95xxIO==1
362
#if sns_input_CH0PCA95xxIO==1
359
        if (pinStatus[0] == LOW_NOCH && ((status>>sns_input_CH0)&0x1) == HIGH) {
363
        if (pinStatus[0] == LOW_NOCH && ((status>>sns_input_CH0)&0x1) == IO_HIGH) {
360
            pinStatus[0] = HIGH;
364
            pinStatus[0] = HIGH;
361
        } else if (pinStatus[0] == HIGH_NOCH && ((status>>sns_input_CH0)&0x1) == LOW) {
365
        } else if (pinStatus[0] == HIGH_NOCH && ((status>>sns_input_CH0)&0x1) == IO_LOW) {
362
            pinStatus[0] = LOW;
366
            pinStatus[0] = LOW;
363
        }
367
        }
364
#endif
368
#endif
365
#endif
369
#endif
366
#ifdef  sns_input_CH1
370
#ifdef  sns_input_CH1
367
#if sns_input_CH1PCA95xxIO==1
371
#if sns_input_CH1PCA95xxIO==1
368
        if (pinStatus[1] == LOW_NOCH && ((status>>sns_input_CH1)&0x1) == HIGH) {
372
        if (pinStatus[1] == LOW_NOCH && ((status>>sns_input_CH1)&0x1) == IO_HIGH) {
369
            pinStatus[1] = HIGH;
373
            pinStatus[1] = HIGH;
370
        } else if (pinStatus[1] == HIGH_NOCH && ((status>>sns_input_CH1)&0x1) == LOW) {
374
        } else if (pinStatus[1] == HIGH_NOCH && ((status>>sns_input_CH1)&0x1) == IO_LOW) {
371
            pinStatus[1] = LOW;
375
            pinStatus[1] = LOW;
372
        }
376
        }
373
#endif
377
#endif
374
#endif
378
#endif
375
#ifdef  sns_input_CH2
379
#ifdef  sns_input_CH2
376
#if sns_input_CH2PCA95xxIO==1
380
#if sns_input_CH2PCA95xxIO==1
377
        if (pinStatus[2] == LOW_NOCH && ((status>>sns_input_CH2)&0x1) == HIGH) {
381
        if (pinStatus[2] == LOW_NOCH && ((status>>sns_input_CH2)&0x1) == IO_HIGH) {
378
            pinStatus[2] = HIGH;
382
            pinStatus[2] = HIGH;
379
        } else if (pinStatus[2] == HIGH_NOCH && ((status>>sns_input_CH2)&0x1) == LOW) {
383
        } else if (pinStatus[2] == HIGH_NOCH && ((status>>sns_input_CH2)&0x1) == IO_LOW) {
380
            pinStatus[2] = LOW;
384
            pinStatus[2] = LOW;
381
        }
385
        }
382
#endif
386
#endif
383
#endif
387
#endif
384
#ifdef  sns_input_CH3
388
#ifdef  sns_input_CH3
385
#if sns_input_CH3PCA95xxIO==1
389
#if sns_input_CH3PCA95xxIO==1
386
        if (pinStatus[3] == LOW_NOCH && ((status>>sns_input_CH3)&0x1) == HIGH) {
390
        if (pinStatus[3] == LOW_NOCH && ((status>>sns_input_CH3)&0x1) == IO_HIGH) {
387
            pinStatus[3] = HIGH;
391
            pinStatus[3] = HIGH;
388
        } else if (pinStatus[3] == HIGH_NOCH && ((status>>sns_input_CH3)&0x1) == LOW) {
392
        } else if (pinStatus[3] == HIGH_NOCH && ((status>>sns_input_CH3)&0x1) == IO_LOW) {
389
            pinStatus[3] = LOW;
393
            pinStatus[3] = LOW;
390
        }
394
        }
391
#endif
395
#endif
392
#endif
396
#endif
393
#ifdef  sns_input_CH4
397
#ifdef  sns_input_CH4
394
#if sns_input_CH4PCA95xxIO==1
398
#if sns_input_CH4PCA95xxIO==1
395
        if (pinStatus[4] == LOW_NOCH && ((status>>sns_input_CH4)&0x1) == HIGH) {
399
        if (pinStatus[4] == LOW_NOCH && ((status>>sns_input_CH4)&0x1) == IO_HIGH) {
396
            pinStatus[4] = HIGH;
400
            pinStatus[4] = HIGH;
397
        } else if (pinStatus[4] == HIGH_NOCH && ((status>>sns_input_CH4)&0x1) == LOW) {
401
        } else if (pinStatus[4] == HIGH_NOCH && ((status>>sns_input_CH4)&0x1) == IO_LOW) {
398
            pinStatus[4] = LOW;
402
            pinStatus[4] = LOW;
399
        }
403
        }
400
#endif
404
#endif
401
#endif
405
#endif
402
#ifdef  sns_input_CH5
406
#ifdef  sns_input_CH5
403
#if sns_input_CH5PCA95xxIO==1
407
#if sns_input_CH5PCA95xxIO==1
404
        if (pinStatus[5] == LOW_NOCH && ((status>>sns_input_CH5)&0x1) == HIGH) {
408
        if (pinStatus[5] == LOW_NOCH && ((status>>sns_input_CH5)&0x1) == IO_HIGH) {
405
            pinStatus[5] = HIGH;
409
            pinStatus[5] = HIGH;
406
        } else if (pinStatus[5] == HIGH_NOCH && ((status>>sns_input_CH5)&0x1) == LOW) {
410
        } else if (pinStatus[5] == HIGH_NOCH && ((status>>sns_input_CH5)&0x1) == IO_LOW) {
407
            pinStatus[5] = LOW;
411
            pinStatus[5] = LOW;
408
        }
412
        }
409
#endif
413
#endif
410
#endif
414
#endif
411
#ifdef  sns_input_CH6
415
#ifdef  sns_input_CH6
412
#if sns_input_CH0PCA95xxIO==1
416
#if sns_input_CH0PCA95xxIO==1
413
        if (pinStatus[6] == LOW_NOCH && ((status>>sns_input_CH6)&0x1) == HIGH) {
417
        if (pinStatus[6] == LOW_NOCH && ((status>>sns_input_CH6)&0x1) == IO_HIGH) {
414
            pinStatus[6] = HIGH;
418
            pinStatus[6] = HIGH;
415
        } else if (pinStatus[6] == HIGH_NOCH && ((status>>sns_input_CH6)&0x1) == LOW) {
419
        } else if (pinStatus[6] == HIGH_NOCH && ((status>>sns_input_CH6)&0x1) == IO_LOW) {
416
            pinStatus[6] = LOW;
420
            pinStatus[6] = LOW;
417
        }
421
        }
418
#endif
422
#endif
419
#endif
423
#endif
420
#ifdef  sns_input_CH7
424
#ifdef  sns_input_CH7
421
#if sns_input_CH7PCA95xxIO==1
425
#if sns_input_CH7PCA95xxIO==1
422
        if (pinStatus[7] == LOW_NOCH && ((status>>sns_input_CH7)&0x1) == HIGH) {
426
        if (pinStatus[7] == LOW_NOCH && ((status>>sns_input_CH7)&0x1) == IO_HIGH) {
423
            pinStatus[7] = HIGH;
427
            pinStatus[7] = HIGH;
424
        } else if (pinStatus[7] == HIGH_NOCH && ((status>>sns_input_CH7)&0x1) == LOW) {
428
        } else if (pinStatus[7] == HIGH_NOCH && ((status>>sns_input_CH7)&0x1) == IO_LOW) {
425
            pinStatus[7] = LOW;
429
            pinStatus[7] = LOW;
426
        }
430
        }
427
#endif
431
#endif
428
#endif
432
#endif
429
 
433