Xin Zhang / azure-iot-c-sdk-f767zi

Dependents:   samplemqtt

Committer:
XinZhangMS
Date:
Thu Aug 23 06:52:14 2018 +0000
Revision:
0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XinZhangMS 0:f7f1f0d76dd6 1 // Copyright (c) Microsoft. All rights reserved.
XinZhangMS 0:f7f1f0d76dd6 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
XinZhangMS 0:f7f1f0d76dd6 3
XinZhangMS 0:f7f1f0d76dd6 4 #include "mbed.h"
XinZhangMS 0:f7f1f0d76dd6 5 #include "azure_c_shared_utility/optimize_size.h"
XinZhangMS 0:f7f1f0d76dd6 6 #include "azure_c_shared_utility/tickcounter.h"
XinZhangMS 0:f7f1f0d76dd6 7
XinZhangMS 0:f7f1f0d76dd6 8 class TICK_COUNTER_INSTANCE_TAG
XinZhangMS 0:f7f1f0d76dd6 9 {
XinZhangMS 0:f7f1f0d76dd6 10 public:
XinZhangMS 0:f7f1f0d76dd6 11 clock_t last_clock_value;
XinZhangMS 0:f7f1f0d76dd6 12 tickcounter_ms_t current_ms;
XinZhangMS 0:f7f1f0d76dd6 13 };
XinZhangMS 0:f7f1f0d76dd6 14
XinZhangMS 0:f7f1f0d76dd6 15 TICK_COUNTER_HANDLE tickcounter_create(void)
XinZhangMS 0:f7f1f0d76dd6 16 {
XinZhangMS 0:f7f1f0d76dd6 17 TICK_COUNTER_INSTANCE_TAG* result;
XinZhangMS 0:f7f1f0d76dd6 18 result = new TICK_COUNTER_INSTANCE_TAG();
XinZhangMS 0:f7f1f0d76dd6 19 result->last_clock_value = clock();
XinZhangMS 0:f7f1f0d76dd6 20 result->current_ms = result->last_clock_value * 1000 / CLOCKS_PER_SEC;
XinZhangMS 0:f7f1f0d76dd6 21 return result;
XinZhangMS 0:f7f1f0d76dd6 22 }
XinZhangMS 0:f7f1f0d76dd6 23
XinZhangMS 0:f7f1f0d76dd6 24 void tickcounter_destroy(TICK_COUNTER_HANDLE tick_counter)
XinZhangMS 0:f7f1f0d76dd6 25 {
XinZhangMS 0:f7f1f0d76dd6 26 if (tick_counter != NULL)
XinZhangMS 0:f7f1f0d76dd6 27 {
XinZhangMS 0:f7f1f0d76dd6 28 delete tick_counter;
XinZhangMS 0:f7f1f0d76dd6 29 }
XinZhangMS 0:f7f1f0d76dd6 30 }
XinZhangMS 0:f7f1f0d76dd6 31
XinZhangMS 0:f7f1f0d76dd6 32 int tickcounter_get_current_ms(TICK_COUNTER_HANDLE tick_counter, tickcounter_ms_t * current_ms)
XinZhangMS 0:f7f1f0d76dd6 33 {
XinZhangMS 0:f7f1f0d76dd6 34 int result;
XinZhangMS 0:f7f1f0d76dd6 35 if (tick_counter == NULL || current_ms == NULL)
XinZhangMS 0:f7f1f0d76dd6 36 {
XinZhangMS 0:f7f1f0d76dd6 37 result = __FAILURE__;
XinZhangMS 0:f7f1f0d76dd6 38 }
XinZhangMS 0:f7f1f0d76dd6 39 else
XinZhangMS 0:f7f1f0d76dd6 40 {
XinZhangMS 0:f7f1f0d76dd6 41 TICK_COUNTER_INSTANCE_TAG* tick_counter_instance = (TICK_COUNTER_INSTANCE_TAG*)tick_counter;
XinZhangMS 0:f7f1f0d76dd6 42
XinZhangMS 0:f7f1f0d76dd6 43 clock_t clock_value = clock();
XinZhangMS 0:f7f1f0d76dd6 44
XinZhangMS 0:f7f1f0d76dd6 45 tick_counter_instance->current_ms += (clock_value - tick_counter_instance->last_clock_value) * 1000 / CLOCKS_PER_SEC;
XinZhangMS 0:f7f1f0d76dd6 46 tick_counter_instance->last_clock_value = clock_value;
XinZhangMS 0:f7f1f0d76dd6 47 *current_ms = tick_counter_instance->current_ms;
XinZhangMS 0:f7f1f0d76dd6 48
XinZhangMS 0:f7f1f0d76dd6 49 result = 0;
XinZhangMS 0:f7f1f0d76dd6 50 }
XinZhangMS 0:f7f1f0d76dd6 51 return result;
XinZhangMS 0:f7f1f0d76dd6 52 }