NEC Near Field Communication RF module library for mbed H001-000003-001 (950MHz), H001-000013-001 (920MHz), TY24FM-E2024 (2.4GHz)
Dependents: NECnfc_sample Drone_air Drone_ground
NEC Near Field Communication RF module library
NEC製の近距離無線モジュール用のライブラリです。
NECnfc.h@0:337524afec9b, 2012-07-17 (annotated)
- Committer:
- okini3939
- Date:
- Tue Jul 17 08:30:31 2012 +0000
- Revision:
- 0:337524afec9b
- Child:
- 2:9e108187ccfe
[mbed] converted /juco_aqua/NECnfc
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:337524afec9b | 1 | /** |
okini3939 | 0:337524afec9b | 2 | * NEC Near Field Communication RF module library for mbed |
okini3939 | 0:337524afec9b | 3 | * Copyright (c) 2012 Suga |
okini3939 | 0:337524afec9b | 4 | * Released under the MIT License: http://mbed.org/license/mit |
okini3939 | 0:337524afec9b | 5 | */ |
okini3939 | 0:337524afec9b | 6 | |
okini3939 | 0:337524afec9b | 7 | /** @file |
okini3939 | 0:337524afec9b | 8 | * @brief NEC Near Field Communication RF module library for mbed |
okini3939 | 0:337524afec9b | 9 | * @note H001-000003-001 (950MHz), TY24FM-E2024 (2.4GHz) |
okini3939 | 0:337524afec9b | 10 | */ |
okini3939 | 0:337524afec9b | 11 | |
okini3939 | 0:337524afec9b | 12 | #include "mbed.h" |
okini3939 | 0:337524afec9b | 13 | |
okini3939 | 0:337524afec9b | 14 | enum NECTYPE { |
okini3939 | 0:337524afec9b | 15 | NECTYPE_950MHz, |
okini3939 | 0:337524afec9b | 16 | NECTYPE_2400MHz, |
okini3939 | 0:337524afec9b | 17 | }; |
okini3939 | 0:337524afec9b | 18 | |
okini3939 | 0:337524afec9b | 19 | enum NECMSG { |
okini3939 | 0:337524afec9b | 20 | NECMSG_ACK = 0x00, |
okini3939 | 0:337524afec9b | 21 | NECMSG_NOACK = 0x01, |
okini3939 | 0:337524afec9b | 22 | NECMSG_SEARCH = 0x10, |
okini3939 | 0:337524afec9b | 23 | NECMSG_SEND_DAT = 0x11, |
okini3939 | 0:337524afec9b | 24 | NECMSG_RESEND = 0x12, |
okini3939 | 0:337524afec9b | 25 | NECMSG_SEND_NOACK = 0x13, |
okini3939 | 0:337524afec9b | 26 | NECMSG_ENERGY_DETECT = 0x16, |
okini3939 | 0:337524afec9b | 27 | NECMSG_SEND_CMD = 0x17, |
okini3939 | 0:337524afec9b | 28 | NECMSG_WRITE_RFCONF = 0x21, |
okini3939 | 0:337524afec9b | 29 | NECMSG_READ_RSSI = 0x24, |
okini3939 | 0:337524afec9b | 30 | NECMSG_READ_CONFIG = 0x29, |
okini3939 | 0:337524afec9b | 31 | NECMSG_WRITE_CONFIG = 0x2A, |
okini3939 | 0:337524afec9b | 32 | NECMSG_READ_DEFAULT = 0x7D, |
okini3939 | 0:337524afec9b | 33 | NECMSG_WRITE_DEFAULT = 0x7E, |
okini3939 | 0:337524afec9b | 34 | NECMSG_RESET = 0x77, |
okini3939 | 0:337524afec9b | 35 | }; |
okini3939 | 0:337524afec9b | 36 | |
okini3939 | 0:337524afec9b | 37 | enum NECPWR { |
okini3939 | 0:337524afec9b | 38 | NECPWR_LOW = 0x00, |
okini3939 | 0:337524afec9b | 39 | NECPWR_MID = 0x01, |
okini3939 | 0:337524afec9b | 40 | NECPWR_HIGH = 0x02, |
okini3939 | 0:337524afec9b | 41 | }; |
okini3939 | 0:337524afec9b | 42 | |
okini3939 | 0:337524afec9b | 43 | enum NECBAUD { |
okini3939 | 0:337524afec9b | 44 | NECBAUD_9600 = 0x02, |
okini3939 | 0:337524afec9b | 45 | NECBAUD_50k = 0x06, |
okini3939 | 0:337524afec9b | 46 | NECBAUD_100k = 0x07, |
okini3939 | 0:337524afec9b | 47 | }; |
okini3939 | 0:337524afec9b | 48 | |
okini3939 | 0:337524afec9b | 49 | enum NECUART { |
okini3939 | 0:337524afec9b | 50 | UART_4800 = 0x01, |
okini3939 | 0:337524afec9b | 51 | UART_9600 = 0x02, |
okini3939 | 0:337524afec9b | 52 | UART_19200 = 0x04, |
okini3939 | 0:337524afec9b | 53 | UART_38400 = 0x05, |
okini3939 | 0:337524afec9b | 54 | UART_56700 = 0x06, |
okini3939 | 0:337524afec9b | 55 | UART_115200 = 0x08, |
okini3939 | 0:337524afec9b | 56 | }; |
okini3939 | 0:337524afec9b | 57 | |
okini3939 | 0:337524afec9b | 58 | struct ifMessage { |
okini3939 | 0:337524afec9b | 59 | uint16_t start; |
okini3939 | 0:337524afec9b | 60 | uint8_t length; |
okini3939 | 0:337524afec9b | 61 | uint8_t msgid; |
okini3939 | 0:337524afec9b | 62 | uint8_t msgno; |
okini3939 | 0:337524afec9b | 63 | uint32_t dstid; |
okini3939 | 0:337524afec9b | 64 | uint32_t srcid; |
okini3939 | 0:337524afec9b | 65 | uint8_t parameter[242]; |
okini3939 | 0:337524afec9b | 66 | } __attribute__((packed)); |
okini3939 | 0:337524afec9b | 67 | |
okini3939 | 0:337524afec9b | 68 | |
okini3939 | 0:337524afec9b | 69 | /** |
okini3939 | 0:337524afec9b | 70 | * NECnfc class |
okini3939 | 0:337524afec9b | 71 | */ |
okini3939 | 0:337524afec9b | 72 | class NECnfc { |
okini3939 | 0:337524afec9b | 73 | public: |
okini3939 | 0:337524afec9b | 74 | /** |
okini3939 | 0:337524afec9b | 75 | * Default constructor |
okini3939 | 0:337524afec9b | 76 | */ |
okini3939 | 0:337524afec9b | 77 | NECnfc (PinName p_tx, PinName p_rx, PinName p_reset); |
okini3939 | 0:337524afec9b | 78 | |
okini3939 | 0:337524afec9b | 79 | /** |
okini3939 | 0:337524afec9b | 80 | * configuration |
okini3939 | 0:337524afec9b | 81 | */ |
okini3939 | 0:337524afec9b | 82 | int begin (int ch, NECBAUD baud, NECUART uart = UART_115200, NECPWR power = NECPWR_LOW, NECTYPE type = NECTYPE_950MHz); |
okini3939 | 0:337524afec9b | 83 | /** |
okini3939 | 0:337524afec9b | 84 | * send |
okini3939 | 0:337524afec9b | 85 | */ |
okini3939 | 0:337524afec9b | 86 | int send (int msgid, unsigned long dest, char *param, int len); |
okini3939 | 0:337524afec9b | 87 | /** |
okini3939 | 0:337524afec9b | 88 | * read |
okini3939 | 0:337524afec9b | 89 | */ |
okini3939 | 0:337524afec9b | 90 | int read (struct ifMessage *ifmsg, int timeout = 5000); |
okini3939 | 0:337524afec9b | 91 | /** |
okini3939 | 0:337524afec9b | 92 | * read data ready |
okini3939 | 0:337524afec9b | 93 | */ |
okini3939 | 0:337524afec9b | 94 | int readable (); |
okini3939 | 0:337524afec9b | 95 | |
okini3939 | 0:337524afec9b | 96 | protected: |
okini3939 | 0:337524afec9b | 97 | void isr_rx (); |
okini3939 | 0:337524afec9b | 98 | |
okini3939 | 0:337524afec9b | 99 | private: |
okini3939 | 0:337524afec9b | 100 | Serial rf; |
okini3939 | 0:337524afec9b | 101 | DigitalOut reset; |
okini3939 | 0:337524afec9b | 102 | int msgno; |
okini3939 | 0:337524afec9b | 103 | struct ifMessage rxmsg; |
okini3939 | 0:337524afec9b | 104 | char *rxbuf; |
okini3939 | 0:337524afec9b | 105 | int rxlen, rxmode; |
okini3939 | 0:337524afec9b | 106 | volatile int rxflg; |
okini3939 | 0:337524afec9b | 107 | |
okini3939 | 0:337524afec9b | 108 | }; |