![](/media/cache/profiles/854d9fca60b4bd07f9bb215d59ef5561.jpg.50x50_q85.jpg)
Simulated product dispenser
Fork of mbed-cloud-workshop-connect-HTS221 by
Diff: simple-mbed-cloud-client/update_ui_example.cpp
- Revision:
- 0:6b753f761943
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/simple-mbed-cloud-client/update_ui_example.cpp Fri Oct 12 21:22:49 2018 +0000 @@ -0,0 +1,140 @@ +// ---------------------------------------------------------------------------- +// Copyright 2016-2018 ARM Ltd. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------- + +#include "update_ui_example.h" + +#ifdef MBED_CLOUD_CLIENT_SUPPORT_UPDATE + +#include <stdio.h> +#include <stdint.h> + +static MbedCloudClient* _client; + +#ifdef ARM_UPDATE_CLIENT_VERSION_VALUE +#if ARM_UPDATE_CLIENT_VERSION_VALUE > 101000 +void update_ui_set_cloud_client(MbedCloudClient* client) +{ + _client = client; +} + +void update_authorize(int32_t request) +{ + switch (request) + { + /* Cloud Client wishes to download new firmware. This can have a negative + impact on the performance of the rest of the system. + + The user application is supposed to pause performance sensitive tasks + before authorizing the download. + + Note: the authorization call can be postponed and called later. + This doesn't affect the performance of the Cloud Client. + */ + case MbedCloudClient::UpdateRequestDownload: + printf("Firmware download requested\r\n"); + printf("Authorization granted\r\n"); + _client->update_authorize(MbedCloudClient::UpdateRequestDownload); + break; + + /* Cloud Client wishes to reboot and apply the new firmware. + + The user application is supposed to save all current work before rebooting. + + Note: the authorization call can be postponed and called later. + This doesn't affect the performance of the Cloud Client. + */ + case MbedCloudClient::UpdateRequestInstall: + printf("Firmware install requested\r\n"); + printf("Authorization granted\r\n"); + _client->update_authorize(MbedCloudClient::UpdateRequestInstall); + break; + + default: + printf("Error - unknown request\r\n"); + break; + } +} +#endif +#endif + +void update_progress(uint32_t progress, uint32_t total) +{ + uint8_t percent = progress * 100 / total; + +/* only show progress bar if debug trace is disabled */ +#if (!defined(MBED_CONF_MBED_TRACE_ENABLE) || MBED_CONF_MBED_TRACE_ENABLE == 0) \ + && !ARM_UC_ALL_TRACE_ENABLE \ + && !ARM_UC_HUB_TRACE_ENABLE + + printf("\rDownloading: ["); + for (uint8_t index = 0; index < 50; index++) + { + if (index < percent / 2) + { + printf("+"); + } + else if (index == percent / 2) + { + static uint8_t old_max = 0; + static uint8_t counter = 0; + + if (index == old_max) + { + counter++; + } + else + { + old_max = index; + counter = 0; + } + + switch (counter % 4) + { + case 0: + printf("/"); + break; + case 1: + printf("-"); + break; + case 2: + printf("\\"); + break; + case 3: + default: + printf("|"); + break; + } + } + else + { + printf(" "); + } + } + printf("] %d %%", percent); + fflush(stdout); +#else + printf("Downloading: %d %%\r\n", percent); +#endif + + if (progress == total) + { + printf("\r\nDownload completed\r\n"); + } +} + +#endif // MBED_CLOUD_CLIENT_SUPPORT_UPDATE