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製の近距離無線モジュール用のライブラリです。

詳細はこちら

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?

UserRevisionLine numberNew 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 };