This program demonstrates how to use a MicroNFCBoard as a peripheral to send a message to a phone/tablet using P2P/SNEP/Android Beam.

Dependencies:   MicroNFCBoardAPI mbed

Fork of MicroNFCBoardAPI_P2P_Client by AppNearMe Official

Committer:
AppNearMe
Date:
Thu May 14 17:22:32 2015 +0000
Revision:
2:6c08a3907187
Parent:
1:5b804c0c8aa8
P2P client fork

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AppNearMe 0:e6bbb5a92267 1 /*
AppNearMe 0:e6bbb5a92267 2 MicroNFCBoard mbed API
AppNearMe 0:e6bbb5a92267 3
AppNearMe 0:e6bbb5a92267 4 Copyright (c) 2014-2015 AppNearMe Ltd
AppNearMe 0:e6bbb5a92267 5
AppNearMe 0:e6bbb5a92267 6 Licensed under the Apache License, Version 2.0 (the "License");
AppNearMe 0:e6bbb5a92267 7 you may not use this file except in compliance with the License.
AppNearMe 0:e6bbb5a92267 8 You may obtain a copy of the License at
AppNearMe 0:e6bbb5a92267 9
AppNearMe 0:e6bbb5a92267 10 http://www.apache.org/licenses/LICENSE-2.0
AppNearMe 0:e6bbb5a92267 11
AppNearMe 0:e6bbb5a92267 12 Unless required by applicable law or agreed to in writing, software
AppNearMe 0:e6bbb5a92267 13 distributed under the License is distributed on an "AS IS" BASIS,
AppNearMe 0:e6bbb5a92267 14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AppNearMe 0:e6bbb5a92267 15 See the License for the specific language governing permissions and
AppNearMe 0:e6bbb5a92267 16 limitations under the License.
AppNearMe 0:e6bbb5a92267 17 */
AppNearMe 0:e6bbb5a92267 18
AppNearMe 0:e6bbb5a92267 19 #include "mbed.h"
AppNearMe 0:e6bbb5a92267 20 #include "micronfcboard.h"
AppNearMe 0:e6bbb5a92267 21
AppNearMe 0:e6bbb5a92267 22 MicroNFCBoard nfc(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, D9);
AppNearMe 0:e6bbb5a92267 23
AppNearMe 0:e6bbb5a92267 24 int main() {
AppNearMe 0:e6bbb5a92267 25 nfc.init();
AppNearMe 2:6c08a3907187 26
AppNearMe 2:6c08a3907187 27 //Start polling
AppNearMe 2:6c08a3907187 28 while(true)
AppNearMe 0:e6bbb5a92267 29 {
AppNearMe 2:6c08a3907187 30 printf("Poll\r\n");
AppNearMe 2:6c08a3907187 31 nfc.startPolling(false, false, true);
AppNearMe 2:6c08a3907187 32
AppNearMe 2:6c08a3907187 33 while( nfc.polling() );
AppNearMe 2:6c08a3907187 34
AppNearMe 2:6c08a3907187 35 if( nfc.p2p() )
AppNearMe 2:6c08a3907187 36 {
AppNearMe 2:6c08a3907187 37 printf("Connected in P2P mode\r\n");
AppNearMe 2:6c08a3907187 38 }
AppNearMe 2:6c08a3907187 39 else
AppNearMe 2:6c08a3907187 40 {
AppNearMe 2:6c08a3907187 41 continue;
AppNearMe 2:6c08a3907187 42 }
AppNearMe 2:6c08a3907187 43
AppNearMe 2:6c08a3907187 44 bool ndefMessageWritten = false;
AppNearMe 2:6c08a3907187 45 bool ndefWritingStarted = false;
AppNearMe 2:6c08a3907187 46 while( nfc.connected() )
AppNearMe 2:6c08a3907187 47 {
AppNearMe 2:6c08a3907187 48 if( !ndefMessageWritten && nfc.ndefWriteable() )
AppNearMe 2:6c08a3907187 49 {
AppNearMe 2:6c08a3907187 50 printf("SNEP Push\r\n");
AppNearMe 2:6c08a3907187 51 nfc.writeNdefUri("http://www.micronfcboard.com");
AppNearMe 2:6c08a3907187 52 nfc.ndefWrite();
AppNearMe 2:6c08a3907187 53 ndefWritingStarted = true;
AppNearMe 2:6c08a3907187 54 }
AppNearMe 2:6c08a3907187 55 if( ndefWritingStarted && !ndefMessageWritten && !nfc.ndefBusy() )
AppNearMe 2:6c08a3907187 56 {
AppNearMe 2:6c08a3907187 57 ndefMessageWritten = true;
AppNearMe 2:6c08a3907187 58 if( nfc.ndefSuccess() )
AppNearMe 2:6c08a3907187 59 {
AppNearMe 2:6c08a3907187 60 printf("Push successful\r\n");
AppNearMe 2:6c08a3907187 61 }
AppNearMe 2:6c08a3907187 62 else
AppNearMe 2:6c08a3907187 63 {
AppNearMe 2:6c08a3907187 64 printf("Push failed\r\n");
AppNearMe 2:6c08a3907187 65 }
AppNearMe 2:6c08a3907187 66 }
AppNearMe 2:6c08a3907187 67 }
AppNearMe 2:6c08a3907187 68
AppNearMe 2:6c08a3907187 69 printf("Disconnected\r\n");
AppNearMe 0:e6bbb5a92267 70 }
AppNearMe 0:e6bbb5a92267 71 }