.. highlight:: javascript Macro ===== The on-board flash memory can also be used to store MetaWear commands instead of sensor data. A good example of this feature is to change the name of a device permanently so that is does not advertise as MetaWear. Recorded commands can be executed any time after being programmed with the functions in `macro.h `_ header file. Recording Commands ------------------ To record commands: 1. Call `mbl_mw_macro_record `_ to put the API in macro mode 2. Use the MetaWear commands that you want programmed 3. Exit macro mode with `mbl_mw_macro_end_record `_ :: MetaWear.mbl_mw_macro_record(device.board, 1) // COMMANDS MetaWear.mbl_mw_macro_end_record(device.board, ref.NULL, callback); Macros can be set to run on boot by setting the ``exec_on_boot`` parameter with a non-zero value. :: MetaWear.mbl_mw_macro_record(board, 1); // ON BOOT MetaWear.mbl_mw_macro_record(board, 0); // NOT ON BOOT In this example, the LED will blink blue on boot: :: // Start recording macro MetaWear.mbl_mw_macro_record(device.board, 1) // COMMAND - Create LED pattern var pattern = new MetaWear.LedPattern(); MetaWear.mbl_mw_led_load_preset_pattern(pattern.ref(), MetaWear.LedPreset.BLINK); MetaWear.mbl_mw_led_write_pattern(device.board, pattern.ref(), MetaWear.LedColor.GREEN); MetaWear.mbl_mw_led_play(device.board); // End recording macro var promise = new Promise((resolve, reject) => { var macro = MetaWear.mbl_mw_macro_end_record(device.board, ref.NULL, MetaWear.FnVoid_VoidP_Int.toPointer(function onSignal(context, rec) { console.log('Macro created'); resolve(rec); })); }); var rec = await promise; Erasing Macros -------------- Erasing macros is done with the `mbl_mw_macro_erase_all `_ method. The erase operation will not occur until you disconnect from the board. :: MetaWear.mbl_mw_macro_erase_all(device.board);