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.
main.js@0:1cefa69131b8, 2018-08-19 (annotated)
- 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?
User | Revision | Line number | New 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 |