Multitech xDot Utils
Diff: MultitechDot.cpp
- Revision:
- 1:73cea350269e
- Parent:
- 0:a5748bc6e3e1
- Child:
- 2:8d1c64670642
diff -r a5748bc6e3e1 -r 73cea350269e MultitechDot.cpp --- a/MultitechDot.cpp Mon May 15 00:59:32 2017 +0300 +++ b/MultitechDot.cpp Thu Jul 20 16:43:35 2017 +0300 @@ -1,5 +1,13 @@ +#include "ChannelPlan.h" +#include "plans/ChannelPlan_EU868.h" #include "MultitechDot.h" +MultitechDot *MultitechDot::getInstance() { + using namespace lora; + ChannelPlan *plan = new ChannelPlan_EU868(); + return (MultitechDot *) mDot::getInstance(plan); +} + void MultitechDot::config(uint8_t *network_address, uint8_t *network_session_key, uint8_t *data_session_key, uint8_t frequency_sub_band, bool public_network, uint8_t ack) { if (!this->getStandbyFlag()) { @@ -58,9 +66,7 @@ logInfo("version ------------------ %s", this->getId().c_str()); logInfo("device ID/EUI ------------ %s", mts::Text::bin2hexString(this->getDeviceId()).c_str()); logInfo("frequency band ----------- %s", this->FrequencyBandStr(this->getFrequencyBand()).c_str()); - if (this->getFrequencySubBand() != this->FB_EU868) { - logInfo("frequency sub band ------- %u", this->getFrequencySubBand()); - } + logInfo("frequency sub band ------- %u", this->getFrequencySubBand()); logInfo("public network ----------- %s", this->getPublicNetwork() ? "on" : "off"); logInfo("========================="); logInfo("credentials configuration"); @@ -502,14 +508,26 @@ if (!deepsleep) { // restore the GPIO state. this->sleep_restore_io(); + this->sleep_reset_hsi(); } } +void MultitechDot::sleep_reset_hsi() { + // Enable the HSI (to clock the ADC) + RCC_OscInitTypeDef RCC_OscInitStruct; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + HAL_RCC_OscConfig(&RCC_OscInitStruct); +} + void MultitechDot::sleep_save_io() { + logInfo("Save GPIO states"); xdot_save_gpio_state(); } void MultitechDot::sleep_configure_io() { + logInfo("Configure GPIO for lowest current"); // GPIO Ports Clock Enable __GPIOA_CLK_ENABLE(); __GPIOB_CLK_ENABLE(); @@ -576,6 +594,7 @@ } void MultitechDot::sleep_restore_io() { + logInfo("Restore GPIO states"); xdot_restore_gpio_state(); }