Archives du projet VélIoT

Dependencies:   mbed NDefLib M24SR BSP_B-L475E-IOT01

Committer:
galaadleconte
Date:
Wed Oct 28 07:57:12 2020 +0000
Revision:
0:8ef2057f72b4
iot

Who changed what in which revision?

UserRevisionLine numberNew contents of line
galaadleconte 0:8ef2057f72b4 1 /**
galaadleconte 0:8ef2057f72b4 2 ******************************************************************************
galaadleconte 0:8ef2057f72b4 3 * @file WriteUriCallbacks.h
galaadleconte 0:8ef2057f72b4 4 * @date 12/07/2017
galaadleconte 0:8ef2057f72b4 5 * @brief Class to write a URI tag.
galaadleconte 0:8ef2057f72b4 6 ******************************************************************************
galaadleconte 0:8ef2057f72b4 7 *
galaadleconte 0:8ef2057f72b4 8 * COPYRIGHT(c) 2017 STMicroelectronics
galaadleconte 0:8ef2057f72b4 9 *
galaadleconte 0:8ef2057f72b4 10 * Redistribution and use in source and binary forms, with or without modification,
galaadleconte 0:8ef2057f72b4 11 * are permitted provided that the following conditions are met:
galaadleconte 0:8ef2057f72b4 12 * 1. Redistributions of source code must retain the above copyright notice,
galaadleconte 0:8ef2057f72b4 13 * this list of conditions and the following disclaimer.
galaadleconte 0:8ef2057f72b4 14 * 2. Redistributions in binary form must reproduce the above copyright notice,
galaadleconte 0:8ef2057f72b4 15 * this list of conditions and the following disclaimer in the documentation
galaadleconte 0:8ef2057f72b4 16 * and/or other materials provided with the distribution.
galaadleconte 0:8ef2057f72b4 17 * 3. Neither the name of STMicroelectronics nor the names of its contributors
galaadleconte 0:8ef2057f72b4 18 * may be used to endorse or promote products derived from this software
galaadleconte 0:8ef2057f72b4 19 * without specific prior written permission.
galaadleconte 0:8ef2057f72b4 20 *
galaadleconte 0:8ef2057f72b4 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
galaadleconte 0:8ef2057f72b4 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
galaadleconte 0:8ef2057f72b4 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
galaadleconte 0:8ef2057f72b4 24 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
galaadleconte 0:8ef2057f72b4 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
galaadleconte 0:8ef2057f72b4 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
galaadleconte 0:8ef2057f72b4 27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
galaadleconte 0:8ef2057f72b4 28 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
galaadleconte 0:8ef2057f72b4 29 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
galaadleconte 0:8ef2057f72b4 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
galaadleconte 0:8ef2057f72b4 31 *
galaadleconte 0:8ef2057f72b4 32 ******************************************************************************
galaadleconte 0:8ef2057f72b4 33 */
galaadleconte 0:8ef2057f72b4 34
galaadleconte 0:8ef2057f72b4 35 #include "mbed.h"
galaadleconte 0:8ef2057f72b4 36 #include "NDefLib/RecordType/RecordURI.h"
galaadleconte 0:8ef2057f72b4 37
galaadleconte 0:8ef2057f72b4 38 /**
galaadleconte 0:8ef2057f72b4 39 * Chain of callback that will crate a Uri record and write it.
galaadleconte 0:8ef2057f72b4 40 * After each operation the class will switch on a led
galaadleconte 0:8ef2057f72b4 41 */
galaadleconte 0:8ef2057f72b4 42 class WriteUriCallbacks : public NDefLib::NDefNfcTag::Callbacks {
galaadleconte 0:8ef2057f72b4 43
galaadleconte 0:8ef2057f72b4 44 DigitalOut &mOnOpenSession;
galaadleconte 0:8ef2057f72b4 45 DigitalOut &mOnWrite;
galaadleconte 0:8ef2057f72b4 46 DigitalOut &mOnCloseSession;
galaadleconte 0:8ef2057f72b4 47 NDefLib::Message *mMsg;
galaadleconte 0:8ef2057f72b4 48
galaadleconte 0:8ef2057f72b4 49 public:
galaadleconte 0:8ef2057f72b4 50
galaadleconte 0:8ef2057f72b4 51 /**
galaadleconte 0:8ef2057f72b4 52 * create the callback chain
galaadleconte 0:8ef2057f72b4 53 * @param onOpenSession led to switch on when the session open
galaadleconte 0:8ef2057f72b4 54 * @param onWrite led to switch on when the write end
galaadleconte 0:8ef2057f72b4 55 * @param onCloseSession led to switch on when the session end
galaadleconte 0:8ef2057f72b4 56 */
galaadleconte 0:8ef2057f72b4 57 WriteUriCallbacks(DigitalOut &onOpenSession,DigitalOut &onWrite,
galaadleconte 0:8ef2057f72b4 58 DigitalOut &onCloseSession):mOnOpenSession(onOpenSession),
galaadleconte 0:8ef2057f72b4 59 mOnWrite(onWrite),mOnCloseSession(onCloseSession){};
galaadleconte 0:8ef2057f72b4 60
galaadleconte 0:8ef2057f72b4 61 /**
galaadleconte 0:8ef2057f72b4 62 * crate the new message and write it
galaadleconte 0:8ef2057f72b4 63 * @param tag tag where write the message
galaadleconte 0:8ef2057f72b4 64 * @param success true if the session correctly open
galaadleconte 0:8ef2057f72b4 65 */
galaadleconte 0:8ef2057f72b4 66 virtual void on_session_open(NDefLib::NDefNfcTag *tag,bool success) {
galaadleconte 0:8ef2057f72b4 67 if (!success) {
galaadleconte 0:8ef2057f72b4 68 printf("Error opening the session\r\n");
galaadleconte 0:8ef2057f72b4 69 }//else
galaadleconte 0:8ef2057f72b4 70 printf("Session opened\r\n");
galaadleconte 0:8ef2057f72b4 71 //ask to have an interrupt when the command finish
galaadleconte 0:8ef2057f72b4 72 mOnOpenSession=1;
galaadleconte 0:8ef2057f72b4 73 mOnCloseSession=0;
galaadleconte 0:8ef2057f72b4 74
galaadleconte 0:8ef2057f72b4 75 // NDefLib::RecordURI *rUri = new NDefLib::RecordURI(NDefLib::RecordURI::HTTP_WWW,"http://www.st.com");
galaadleconte 0:8ef2057f72b4 76 NDefLib::RecordURI *rUri2 = new NDefLib::RecordURI(NDefLib::RecordURI::UNKNOWN,"\nPropriétaire : Start-Up VélIoT. \nDernière révision : 18/10/19\nProchaine révision obligatoire : 26/01/21\nNuméro de téléphone du propriétaire : +33679469595\nAdresse du propriétaire : 1 rue Joliot Curie, 91190, Gif sur Yvette\nDate d'achat : 18/10/19\nLieu d'achat : Cycles Fab, 62280, La Capelle les Boulogne\n");
galaadleconte 0:8ef2057f72b4 77
galaadleconte 0:8ef2057f72b4 78 mMsg = new NDefLib::Message();
galaadleconte 0:8ef2057f72b4 79 // mMsg->add_record(rUri);
galaadleconte 0:8ef2057f72b4 80 mMsg->add_record(rUri2);
galaadleconte 0:8ef2057f72b4 81
galaadleconte 0:8ef2057f72b4 82 tag->write(*mMsg);
galaadleconte 0:8ef2057f72b4 83 }
galaadleconte 0:8ef2057f72b4 84
galaadleconte 0:8ef2057f72b4 85 /**
galaadleconte 0:8ef2057f72b4 86 * request to close the session
galaadleconte 0:8ef2057f72b4 87 * @param tag tag where close the session
galaadleconte 0:8ef2057f72b4 88 * @param success true if the message is correctly wrote
galaadleconte 0:8ef2057f72b4 89 * @param message wrote
galaadleconte 0:8ef2057f72b4 90 */
galaadleconte 0:8ef2057f72b4 91 virtual void on_message_write(NDefLib::NDefNfcTag *tag,bool success) {
galaadleconte 0:8ef2057f72b4 92
galaadleconte 0:8ef2057f72b4 93 if (!success) {
galaadleconte 0:8ef2057f72b4 94 printf("Error writing tag!\r\n");
galaadleconte 0:8ef2057f72b4 95 } else {
galaadleconte 0:8ef2057f72b4 96 printf("Tag written!\r\n");
galaadleconte 0:8ef2057f72b4 97 mOnWrite=1;
galaadleconte 0:8ef2057f72b4 98 }//if-else
galaadleconte 0:8ef2057f72b4 99
galaadleconte 0:8ef2057f72b4 100 NDefLib::Message::remove_and_delete_all_record(*mMsg);
galaadleconte 0:8ef2057f72b4 101 delete mMsg;
galaadleconte 0:8ef2057f72b4 102 tag->close_session();
galaadleconte 0:8ef2057f72b4 103 }
galaadleconte 0:8ef2057f72b4 104
galaadleconte 0:8ef2057f72b4 105 /**
galaadleconte 0:8ef2057f72b4 106 * switch on the led
galaadleconte 0:8ef2057f72b4 107 * @param tag where the session is closed
galaadleconte 0:8ef2057f72b4 108 * @param success true if the session is correctly close
galaadleconte 0:8ef2057f72b4 109 */
galaadleconte 0:8ef2057f72b4 110 virtual void on_session_close(NDefLib::NDefNfcTag*, bool success) {
galaadleconte 0:8ef2057f72b4 111 if (success) {
galaadleconte 0:8ef2057f72b4 112 printf("Session closed\r\n");
galaadleconte 0:8ef2057f72b4 113 mOnCloseSession=1;
galaadleconte 0:8ef2057f72b4 114 mOnOpenSession=0;
galaadleconte 0:8ef2057f72b4 115 mOnWrite=0;
galaadleconte 0:8ef2057f72b4 116 } else {
galaadleconte 0:8ef2057f72b4 117 printf("Error closing the session\r\n");
galaadleconte 0:8ef2057f72b4 118 }
galaadleconte 0:8ef2057f72b4 119 }
galaadleconte 0:8ef2057f72b4 120 };