Simple Mbed Cloud Client application using features of K64 & K66
Connect to Mbed Cloud!
This example was customized a bit for FRDM-K66 and FRDM-K64F.
It depends on having an SD Card plugged in for storage of credentials. It could be changed later to use a SPI flash or other storage on a shield or wired in.
The app keeps track of how many times switch 2 (SW2) is pressed. The value can be retrieved via a GET request to Mbed Cloud.
Also, it will blink a pattern based on milisecond (ms) timing values that can be sent from Mbed Cloud. The pattern can be sent with a PUT request and the blinking sequence can be triggered by a POST request.
setup.h@0:e13a8a944e25, 2018-02-13 (annotated)
- Committer:
- MarceloSalazar
- Date:
- Tue Feb 13 10:07:23 2018 +0000
- Revision:
- 0:e13a8a944e25
First version
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MarceloSalazar | 0:e13a8a944e25 | 1 | // ---------------------------------------------------------------------------- |
| MarceloSalazar | 0:e13a8a944e25 | 2 | // Copyright 2016-2017 ARM Ltd. |
| MarceloSalazar | 0:e13a8a944e25 | 3 | // |
| MarceloSalazar | 0:e13a8a944e25 | 4 | // SPDX-License-Identifier: Apache-2.0 |
| MarceloSalazar | 0:e13a8a944e25 | 5 | // |
| MarceloSalazar | 0:e13a8a944e25 | 6 | // Licensed under the Apache License, Version 2.0 (the "License"); |
| MarceloSalazar | 0:e13a8a944e25 | 7 | // you may not use this file except in compliance with the License. |
| MarceloSalazar | 0:e13a8a944e25 | 8 | // You may obtain a copy of the License at |
| MarceloSalazar | 0:e13a8a944e25 | 9 | // |
| MarceloSalazar | 0:e13a8a944e25 | 10 | // http://www.apache.org/licenses/LICENSE-2.0 |
| MarceloSalazar | 0:e13a8a944e25 | 11 | // |
| MarceloSalazar | 0:e13a8a944e25 | 12 | // Unless required by applicable law or agreed to in writing, software |
| MarceloSalazar | 0:e13a8a944e25 | 13 | // distributed under the License is distributed on an "AS IS" BASIS, |
| MarceloSalazar | 0:e13a8a944e25 | 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| MarceloSalazar | 0:e13a8a944e25 | 15 | // See the License for the specific language governing permissions and |
| MarceloSalazar | 0:e13a8a944e25 | 16 | // limitations under the License. |
| MarceloSalazar | 0:e13a8a944e25 | 17 | // ---------------------------------------------------------------------------- |
| MarceloSalazar | 0:e13a8a944e25 | 18 | |
| MarceloSalazar | 0:e13a8a944e25 | 19 | #ifndef SETUP_H |
| MarceloSalazar | 0:e13a8a944e25 | 20 | #define SETUP_H |
| MarceloSalazar | 0:e13a8a944e25 | 21 | |
| MarceloSalazar | 0:e13a8a944e25 | 22 | #include <stdint.h> |
| MarceloSalazar | 0:e13a8a944e25 | 23 | |
| MarceloSalazar | 0:e13a8a944e25 | 24 | //FORWARD DECLARATION |
| MarceloSalazar | 0:e13a8a944e25 | 25 | class M2MObject; |
| MarceloSalazar | 0:e13a8a944e25 | 26 | namespace m2m { |
| MarceloSalazar | 0:e13a8a944e25 | 27 | template<class ObjectTemplate> class Vector; |
| MarceloSalazar | 0:e13a8a944e25 | 28 | } |
| MarceloSalazar | 0:e13a8a944e25 | 29 | |
| MarceloSalazar | 0:e13a8a944e25 | 30 | using namespace m2m; |
| MarceloSalazar | 0:e13a8a944e25 | 31 | |
| MarceloSalazar | 0:e13a8a944e25 | 32 | typedef Vector<M2MObject *> M2MObjectList; |
| MarceloSalazar | 0:e13a8a944e25 | 33 | |
| MarceloSalazar | 0:e13a8a944e25 | 34 | #ifdef __cplusplus |
| MarceloSalazar | 0:e13a8a944e25 | 35 | extern "C" { |
| MarceloSalazar | 0:e13a8a944e25 | 36 | #endif |
| MarceloSalazar | 0:e13a8a944e25 | 37 | |
| MarceloSalazar | 0:e13a8a944e25 | 38 | // Interval to update resource value in ms |
| MarceloSalazar | 0:e13a8a944e25 | 39 | #define INCREMENT_INTERVAL 25000 |
| MarceloSalazar | 0:e13a8a944e25 | 40 | |
| MarceloSalazar | 0:e13a8a944e25 | 41 | typedef void (*main_t)(void); |
| MarceloSalazar | 0:e13a8a944e25 | 42 | |
| MarceloSalazar | 0:e13a8a944e25 | 43 | // Initialize platform |
| MarceloSalazar | 0:e13a8a944e25 | 44 | // This function initializes screen and any other non-network |
| MarceloSalazar | 0:e13a8a944e25 | 45 | // related platform specific initializations required. |
| MarceloSalazar | 0:e13a8a944e25 | 46 | // |
| MarceloSalazar | 0:e13a8a944e25 | 47 | // @returns |
| MarceloSalazar | 0:e13a8a944e25 | 48 | // 0 for success, anything else for error |
| MarceloSalazar | 0:e13a8a944e25 | 49 | extern int initPlatform(); |
| MarceloSalazar | 0:e13a8a944e25 | 50 | |
| MarceloSalazar | 0:e13a8a944e25 | 51 | // Initialize network connection |
| MarceloSalazar | 0:e13a8a944e25 | 52 | extern bool init_connection(); |
| MarceloSalazar | 0:e13a8a944e25 | 53 | |
| MarceloSalazar | 0:e13a8a944e25 | 54 | // Returns network interface. |
| MarceloSalazar | 0:e13a8a944e25 | 55 | extern void *get_network_interface(); |
| MarceloSalazar | 0:e13a8a944e25 | 56 | |
| MarceloSalazar | 0:e13a8a944e25 | 57 | // Toggle led (if available) |
| MarceloSalazar | 0:e13a8a944e25 | 58 | extern void toggle_led(void); |
| MarceloSalazar | 0:e13a8a944e25 | 59 | |
| MarceloSalazar | 0:e13a8a944e25 | 60 | // Put led off (if available) |
| MarceloSalazar | 0:e13a8a944e25 | 61 | extern void led_off(void); |
| MarceloSalazar | 0:e13a8a944e25 | 62 | |
| MarceloSalazar | 0:e13a8a944e25 | 63 | // Check if button has been pressed (if available) |
| MarceloSalazar | 0:e13a8a944e25 | 64 | extern uint8_t button_clicked(void); |
| MarceloSalazar | 0:e13a8a944e25 | 65 | |
| MarceloSalazar | 0:e13a8a944e25 | 66 | // Thread for updating resource value |
| MarceloSalazar | 0:e13a8a944e25 | 67 | extern void increment_resource_thread(void* client); |
| MarceloSalazar | 0:e13a8a944e25 | 68 | |
| MarceloSalazar | 0:e13a8a944e25 | 69 | // Print heap allocations |
| MarceloSalazar | 0:e13a8a944e25 | 70 | extern void print_heap_stats(); |
| MarceloSalazar | 0:e13a8a944e25 | 71 | |
| MarceloSalazar | 0:e13a8a944e25 | 72 | // Print m2mobject sizes |
| MarceloSalazar | 0:e13a8a944e25 | 73 | extern void print_m2mobject_stats(); |
| MarceloSalazar | 0:e13a8a944e25 | 74 | |
| MarceloSalazar | 0:e13a8a944e25 | 75 | // Create set of objects to test size |
| MarceloSalazar | 0:e13a8a944e25 | 76 | extern void create_m2mobject_test_set(M2MObjectList *object_list); |
| MarceloSalazar | 0:e13a8a944e25 | 77 | |
| MarceloSalazar | 0:e13a8a944e25 | 78 | // Wait |
| MarceloSalazar | 0:e13a8a944e25 | 79 | extern void do_wait(int timeout_ms); |
| MarceloSalazar | 0:e13a8a944e25 | 80 | |
| MarceloSalazar | 0:e13a8a944e25 | 81 | int run_application(int(*function)(void)); |
| MarceloSalazar | 0:e13a8a944e25 | 82 | |
| MarceloSalazar | 0:e13a8a944e25 | 83 | extern bool runProgram(main_t mainFunc); |
| MarceloSalazar | 0:e13a8a944e25 | 84 | |
| MarceloSalazar | 0:e13a8a944e25 | 85 | extern bool application_init(void); |
| MarceloSalazar | 0:e13a8a944e25 | 86 | |
| MarceloSalazar | 0:e13a8a944e25 | 87 | extern bool rmFirmwareImages(void); |
| MarceloSalazar | 0:e13a8a944e25 | 88 | |
| MarceloSalazar | 0:e13a8a944e25 | 89 | extern int reformat_storage(void); |
| MarceloSalazar | 0:e13a8a944e25 | 90 | |
| MarceloSalazar | 0:e13a8a944e25 | 91 | #ifdef __cplusplus |
| MarceloSalazar | 0:e13a8a944e25 | 92 | } |
| MarceloSalazar | 0:e13a8a944e25 | 93 | #endif |
| MarceloSalazar | 0:e13a8a944e25 | 94 | |
| MarceloSalazar | 0:e13a8a944e25 | 95 | #endif |