This example project explains the following: * Reading and writing NFC tag * Use Flash storage to store Javascript source code which can be executed when the board is turned on. * Downloading JavaScript program from url. Project demo: Writes and runs JS program from Flash storage by downloading from internet using URL from NFC tag. NFC tag must contain the following info: 1- Password 2- URL separated by: , Note: This project is based on Mbed JavaScript and hence cannot be compiled using MBed Compiler. Read Readme.md for information about compiling and running this project.

Committer:
akhtar.syedzeeshan@gmail.com
Date:
Sun Aug 19 21:39:08 2018 +0500
Revision:
0:1cefa69131b8
First commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 1 var js_manager = require('./js_manager');
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 2 var serial_interface = new SerialInterface();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 3
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 4 var button = InterruptIn(BUTTON1);
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 5
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 6 var security_key = 'F38sZ2a9';
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 7
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 8 write_nfc_tag = function(){
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 9 var i2c = DevI2C(D14, D15);
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 10 var nfc = NFC02A1();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 11 nfc.init(i2c);
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 12 nfc.write_tag("F38sZ2a9,F4Jq6yc2D6yxKqW");
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 13 }
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 14
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 15 process_nfc = function(){
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 16 var i2c = DevI2C(D14, D15);
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 17 var nfc = NFC02A1();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 18 nfc.init(i2c);
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 19 tag_data = nfc.read_tag();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 20 tag_array = tag_data.split(",");
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 21 if(security_key.localeCompare(tag_array[0]) == 0){
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 22 print("\33[32mSecurity key matched!\33[0m");
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 23 print('\33[32mDownloading file: ' + tag_array[1] + '\33[0m');
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 24 load_nfc_program(tag_array[1]);
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 25 }
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 26 else{
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 27 print("\33[31mSecurity key mismatched!\33[0m");
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 28 }
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 29 }
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 30
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 31 button.fall(function() {
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 32 process_nfc();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 33 //gg();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 34 });
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 35
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 36 print('Running in 5 seconds...')
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 37 setTimeout(function(){
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 38 print('')
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 39 run_program_from_flash();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 40 button.fall(function() {
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 41 process_nfc();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 42 //gg();
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 43 });
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 44 }, 5000);
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 45
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 46 print("Press button for demo.\r");
akhtar.syedzeeshan@gmail.com 0:1cefa69131b8 47