Suga koubou
/
NECnfc_sample
see: https://developer.mbed.org/users/okini3939/notebook/necnfc/
main.cpp@0:b5fa611b8d7d, 2015-09-15 (annotated)
- Committer:
- okini3939
- Date:
- Tue Sep 15 06:33:01 2015 +0000
- Revision:
- 0:b5fa611b8d7d
sample build;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:b5fa611b8d7d | 1 | #include "mbed.h" |
okini3939 | 0:b5fa611b8d7d | 2 | #include "NECnfc.h" |
okini3939 | 0:b5fa611b8d7d | 3 | |
okini3939 | 0:b5fa611b8d7d | 4 | DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); |
okini3939 | 0:b5fa611b8d7d | 5 | Serial pc(USBTX, USBRX); |
okini3939 | 0:b5fa611b8d7d | 6 | NECnfc rf(p9, p10, p13, p14, p15, 38400, NECnfc::TYPE_920MHz); // tx, rx, reset, wakeup, mode |
okini3939 | 0:b5fa611b8d7d | 7 | DigitalOut rts(p11); |
okini3939 | 0:b5fa611b8d7d | 8 | Ticker timer; |
okini3939 | 0:b5fa611b8d7d | 9 | |
okini3939 | 0:b5fa611b8d7d | 10 | void isr_recv () { |
okini3939 | 0:b5fa611b8d7d | 11 | char buf[NEC_MAXLENGTH + 1]; |
okini3939 | 0:b5fa611b8d7d | 12 | int i, dest, src; |
okini3939 | 0:b5fa611b8d7d | 13 | i = rf.readData(&dest, &src, buf, sizeof(buf)); |
okini3939 | 0:b5fa611b8d7d | 14 | if (i <= 0) return; |
okini3939 | 0:b5fa611b8d7d | 15 | buf[i] = 0; |
okini3939 | 0:b5fa611b8d7d | 16 | printf("recv to:%08x from:%08x '%s'\r\n", dest, src, buf); |
okini3939 | 0:b5fa611b8d7d | 17 | led4 = !led4; |
okini3939 | 0:b5fa611b8d7d | 18 | } |
okini3939 | 0:b5fa611b8d7d | 19 | |
okini3939 | 0:b5fa611b8d7d | 20 | int main() { |
okini3939 | 0:b5fa611b8d7d | 21 | Timer t; |
okini3939 | 0:b5fa611b8d7d | 22 | unsigned int id; |
okini3939 | 0:b5fa611b8d7d | 23 | |
okini3939 | 0:b5fa611b8d7d | 24 | rts = 0; |
okini3939 | 0:b5fa611b8d7d | 25 | led1 = 1; |
okini3939 | 0:b5fa611b8d7d | 26 | pc.baud(115200); |
okini3939 | 0:b5fa611b8d7d | 27 | pc.printf("*** NEC\r\n"); |
okini3939 | 0:b5fa611b8d7d | 28 | wait(0.5); |
okini3939 | 0:b5fa611b8d7d | 29 | |
okini3939 | 0:b5fa611b8d7d | 30 | rf.attach(&isr_recv); |
okini3939 | 0:b5fa611b8d7d | 31 | rf.setRfConfig(NECnfc::PWR_MAX, 24, NECnfc::BAUD_50k); |
okini3939 | 0:b5fa611b8d7d | 32 | |
okini3939 | 0:b5fa611b8d7d | 33 | id = rf.getId(); |
okini3939 | 0:b5fa611b8d7d | 34 | pc.printf(" id %08x\r\n", id); |
okini3939 | 0:b5fa611b8d7d | 35 | |
okini3939 | 0:b5fa611b8d7d | 36 | t.start(); |
okini3939 | 0:b5fa611b8d7d | 37 | while(1) { |
okini3939 | 0:b5fa611b8d7d | 38 | rf.poll(); |
okini3939 | 0:b5fa611b8d7d | 39 | |
okini3939 | 0:b5fa611b8d7d | 40 | if (pc.readable()) { |
okini3939 | 0:b5fa611b8d7d | 41 | char c = pc.getc(); |
okini3939 | 0:b5fa611b8d7d | 42 | if (c == ' ') { |
okini3939 | 0:b5fa611b8d7d | 43 | led2 = 1; |
okini3939 | 0:b5fa611b8d7d | 44 | rf.send(NECnfc::NECMSG_SEND_NOACK, NEC_DUMMYID, "Hello mbed", 10); |
okini3939 | 0:b5fa611b8d7d | 45 | } |
okini3939 | 0:b5fa611b8d7d | 46 | } |
okini3939 | 0:b5fa611b8d7d | 47 | |
okini3939 | 0:b5fa611b8d7d | 48 | if (t.read() >= 5) { |
okini3939 | 0:b5fa611b8d7d | 49 | led3 = 1; |
okini3939 | 0:b5fa611b8d7d | 50 | t.reset(); |
okini3939 | 0:b5fa611b8d7d | 51 | rf.send(NECnfc::NECMSG_SEND_NOACK, NEC_DUMMYID, "Hello World", 11); |
okini3939 | 0:b5fa611b8d7d | 52 | } |
okini3939 | 0:b5fa611b8d7d | 53 | |
okini3939 | 0:b5fa611b8d7d | 54 | led1 = !led1; |
okini3939 | 0:b5fa611b8d7d | 55 | led2 = 0; |
okini3939 | 0:b5fa611b8d7d | 56 | led3 = 0; |
okini3939 | 0:b5fa611b8d7d | 57 | wait(0.1); |
okini3939 | 0:b5fa611b8d7d | 58 | } |
okini3939 | 0:b5fa611b8d7d | 59 | } |