NuMaker connection with AWS IoT thru MQTT/HTTPS

Dependencies:   MQTT

Committer:
ccli8
Date:
Thu Sep 02 11:34:22 2021 +0800
Revision:
45:7d315fb1ba3e
Parent:
29:e890b0fdce53
Fix MQTT client ID collision

If not assigned, generate unique MQTT client ID:
1. For non-TZ targets, use FMC/UID.
2. For TZ targets (NS), FMC/UID is inaccessible. Use random instead.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ccli8 29:e890b0fdce53 1 /*
ccli8 29:e890b0fdce53 2 * Copyright (c) 2019 Nuvoton Technology Corporation
ccli8 29:e890b0fdce53 3 *
ccli8 29:e890b0fdce53 4 * SPDX-License-Identifier: Apache-2.0
ccli8 29:e890b0fdce53 5 *
ccli8 29:e890b0fdce53 6 * Licensed under the Apache License, Version 2.0 (the "License");
ccli8 29:e890b0fdce53 7 * you may not use this file except in compliance with the License.
ccli8 29:e890b0fdce53 8 * You may obtain a copy of the License at
ccli8 29:e890b0fdce53 9 *
ccli8 29:e890b0fdce53 10 * http://www.apache.org/licenses/LICENSE-2.0
ccli8 29:e890b0fdce53 11 *
ccli8 29:e890b0fdce53 12 * Unless required by applicable law or agreed to in writing, software
ccli8 29:e890b0fdce53 13 * distributed under the License is distributed on an "AS IS" BASIS,
ccli8 29:e890b0fdce53 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ccli8 29:e890b0fdce53 15 * See the License for the specific language governing permissions and
ccli8 29:e890b0fdce53 16 * limitations under the License.
ccli8 29:e890b0fdce53 17 */
ccli8 29:e890b0fdce53 18
ccli8 29:e890b0fdce53 19 #include "mbed.h"
ccli8 29:e890b0fdce53 20
ccli8 29:e890b0fdce53 21 #if (MBED_HEAP_STATS_ENABLED) || (MBED_STACK_STATS_ENABLED)
ccli8 29:e890b0fdce53 22 /* Measure memory footprint */
ccli8 29:e890b0fdce53 23 #include "mbed_stats.h"
ccli8 29:e890b0fdce53 24 /* Fix up the compilation on AMRCC for PRIu32 */
ccli8 29:e890b0fdce53 25 #define __STDC_FORMAT_MACROS
ccli8 29:e890b0fdce53 26 #include <inttypes.h>
ccli8 29:e890b0fdce53 27 #endif
ccli8 29:e890b0fdce53 28
ccli8 29:e890b0fdce53 29 /* Support memory footprint */
ccli8 29:e890b0fdce53 30
ccli8 29:e890b0fdce53 31 /* Check weak reference/definition at the link:
ccli8 29:e890b0fdce53 32 * http://www.keil.com/support/man/docs/ARMLINK/armlink_pge1362065917715.htm */
ccli8 29:e890b0fdce53 33
ccli8 29:e890b0fdce53 34 extern "C" {
ccli8 29:e890b0fdce53 35 #if (MBED_HEAP_STATS_ENABLED)
ccli8 29:e890b0fdce53 36 MBED_USED void print_heap_stats(void);
ccli8 29:e890b0fdce53 37 #endif
ccli8 29:e890b0fdce53 38 #if (MBED_STACK_STATS_ENABLED)
ccli8 29:e890b0fdce53 39 MBED_USED void print_stack_statistics();
ccli8 29:e890b0fdce53 40 #endif
ccli8 29:e890b0fdce53 41 }
ccli8 29:e890b0fdce53 42
ccli8 29:e890b0fdce53 43 #if (MBED_HEAP_STATS_ENABLED)
ccli8 29:e890b0fdce53 44 void print_heap_stats(void)
ccli8 29:e890b0fdce53 45 {
ccli8 29:e890b0fdce53 46 mbed_stats_heap_t stats;
ccli8 29:e890b0fdce53 47 mbed_stats_heap_get(&stats);
ccli8 29:e890b0fdce53 48 printf("** MBED HEAP STATS **\n");
ccli8 29:e890b0fdce53 49 printf("**** current_size: %" PRIu32 "\n", stats.current_size);
ccli8 29:e890b0fdce53 50 printf("**** max_size : %" PRIu32 "\n", stats.max_size);
ccli8 29:e890b0fdce53 51 printf("*****************************\n\n");
ccli8 29:e890b0fdce53 52 }
ccli8 29:e890b0fdce53 53 #endif // MBED_HEAP_STATS_ENABLED
ccli8 29:e890b0fdce53 54
ccli8 29:e890b0fdce53 55 #if (MBED_STACK_STATS_ENABLED)
ccli8 29:e890b0fdce53 56 void print_stack_statistics()
ccli8 29:e890b0fdce53 57 {
ccli8 29:e890b0fdce53 58 printf("** MBED THREAD STACK STATS **\n");
ccli8 29:e890b0fdce53 59 int cnt = osThreadGetCount();
ccli8 29:e890b0fdce53 60 mbed_stats_stack_t *stats = (mbed_stats_stack_t*) malloc(cnt * sizeof(mbed_stats_stack_t));
ccli8 29:e890b0fdce53 61
ccli8 29:e890b0fdce53 62 if (stats) {
ccli8 29:e890b0fdce53 63 cnt = mbed_stats_stack_get_each(stats, cnt);
ccli8 29:e890b0fdce53 64 for (int i = 0; i < cnt; i++) {
ccli8 29:e890b0fdce53 65 printf("Thread: 0x%" PRIx32 ", Stack size: %" PRIu32 ", Max stack: %" PRIu32 "\r\n", stats[i].thread_id, stats[i].reserved_size, stats[i].max_size);
ccli8 29:e890b0fdce53 66 }
ccli8 29:e890b0fdce53 67
ccli8 29:e890b0fdce53 68 free(stats);
ccli8 29:e890b0fdce53 69 }
ccli8 29:e890b0fdce53 70 printf("*****************************\n\n");
ccli8 29:e890b0fdce53 71 }
ccli8 29:e890b0fdce53 72 #endif // MBED_STACK_STATS_ENABLED