Mike Fiore
Forum Replies Created
-
AuthorPosts
-
Mike Fiore
BlockedIani,
We do not currently release the source code for libmDot. This is to ensure that the maintains compliance with FCC/CE/etc regulations.
I’m not aware of any plans to release the source in the future.
Cheers,
Mike
Mike Fiore
BlockedSteeve,
Ok. I think you should open a portal case. We should be able to connect you to the right person via that medium.
Cheers,
Mike
Mike Fiore
BlockedSteeve,
I’m not sure exactly what you’re asking for. Can you clarify?
Thanks,
Mike
Mike Fiore
BlockedSteeve,
It will be releasing in Q4 2016.
Cheers,
Mike
Mike Fiore
BlockedSteeve,
The current version of the mDot library supports class A operation. The next release will support class C as well.
Cheers,
Mike
Mike Fiore
BlockedAndrew,
We’re hoping to have online compiler support by the end of this month.
Cheers,
Mike
Mike Fiore
BlockedMike Fiore
BlockedAndrew,
We don’t have a mbed platform released yet for the xDot. Support for the xDot samples will be via the offline mbed SDK.
The xDot samples will come loaded with AT command firmware. If you want to develop an application, please open a support case and we can get you a library build and information about building offline.
Cheers,
Mike
Mike Fiore
BlockedWill,
Can you post a complete example that demonstrates the issue?
Cheers,
Mike
Mike Fiore
BlockedBasha,
There is also a GPS API in the MTSAS library on mbed.
/** Enables GPS. * @returns true if GPS is enabled, false if GPS is not supported. */ virtual bool GPSenable(); /** Disables GPS. * @returns true if GPS is disabled, false if GPS does not disable. */ virtual bool GPSdisable(); /** Checks if GPS is enabled. * @returns true if GPS is enabled, false if GPS is disabled. */ virtual bool GPSenabled(); /** Get GPS position. * @returns a structure containing the GPS data field information. */ virtual gpsData GPSgetPosition(); /** Check for GPS fix. * @returns true if there is a fix and false otherwise. */ virtual bool GPSgotFix();
The library can be found here: https://developer.mbed.org/teams/MultiTech/code/mtsas/
Cheers,
Mike
Mike Fiore
BlockedJavier,
I just had another thought. It might be worthwhile to make sure there’s nothing wrong with the RTC on that mDot. Can you test on another mDot? Here’s the main for a simple app that will make sure the RTC is functioning properly.
#include "mbed.h" int main() { printf("initializing RTC\r\n"); // 1/3/2016 00:00:00 GMT - 1451779200 set_time(1451779200); while (true) { printf("time %d\r\n", time(NULL)); wait(1); } return 0; }
Cheers,
Mike
Mike Fiore
BlockedJavier,
Apologies for the slow response – I didn’t realize you had replied to my question.
I wrote up a simple app to test this situation using mbed 121, mbed-rtos 117, and libmDot 15. Here’s the contents of main:
#include "mbed.h" #include "mDot.h" #include "MTSLog.h" int main() { mDot* dot = mDot::getInstance(); dot->setLogLevel(mts::MTSLog::INFO_LEVEL); logInfo("version: %s", dot->getId().c_str()); dot->sleep(10, mDot::RTC_ALARM_OR_INTERRUPT); return 0; }
I tested this on a mDot on my MDK. It woke up properly via the RTC alarm and a rising edge on PA_0.
A couple things to try:
It’s possible the RTC got put into a bad state if you programmed your mDot while it was sleeping. I have seen this happen before. To resolve it, completely remove power from the MDK/mDot (aka unplug the USB). Another way to prevent this from happening is to hold the device in reset while programming (hold the reset button until you’ve dragged and dropped the binary).
If you still have issues, you can open a support case at http://support.multitech.com.
Cheers,
Mike
Mike Fiore
BlockedAndrew,
The code path around going to sleep and waking up is slightly different depending on the wakeup method, but it shouldn’t prevent the device from functioning properly.
I think one of two things may be happening. Either the library version actually aren’t the same, or there are major differences in the configuration between the two devices.
Can you confirm the library version of both devices? It would be great if you could log a call to mDot::getId() before joining and include it in the debug output.
Also, if you can post the at&v results from the AT firmware, that would be helpful as well.
Cheers,
Mike
Mike Fiore
BlockedDamian,
What I’m saying is that there is a potentially easier and more future proof way of using Eclipse with the mDot and mbed libraries. Did you take a look at the link I posted about using mbed with Eclipse?
Cheers,
Mike
Mike Fiore
BlockedAndrew,
I tested on a mDot with vanilla AT firmware revision 11:
https://developer.mbed.org/teams/MultiTech/code/mDot_AT_firmware/
I wasn’t able to reproduce the issue. When I joined the network in OTA mode and went to sleep, I didn’t see any evidence of anything getting saved to flash.
at+join Successfully joined network OK at+sleep=0 OK at+sleep=0 OK at+sleep=1 OK [DEBUG] mDotEvent - JoinAccept [TRACE] Event: OK [TRACE] Flags Tx: 0 Rx: 0 RxData: 0 RxSlot: 0 LinkCheck: 0 JoinAccept: 1 [TRACE] Info: Status: 0 ACK: 0 Retries: 0 TxDR: 0 RxPort: 0 RxSize: 0 RSSI: 0 SNR: 0 Energy: 0 Margin: 0 Gateways: 0 [INFO] Packet RSSI: -79 dB SNR: 67 cB [DEBUG] mDotEvent - RxDone [TRACE] configuring RTC Alarm A to wakeup 10 seconds from now [TRACE] save timers: 0 0 0 0 0 0 0 [INFO] entering deepsleep (standby) mode 00000037[INFO] mDot Ready [TRACE] configuring RTC Alarm A to wakeup 10 seconds from now [TRACE] save timers: 0 0 0 0 0 0 0 [INFO] entering deepsleep (standby) mode 00000037[INFO] mDot Ready [TRACE] configuring RTC Alarm A to wakeup 10 seconds from now [INFO] entering sleep (stop) mode 00000037��
However when I set my join mode to AUTO_OTA, the session gets saved and restored.
at+join=1 Successfully joined network OK at+sleep=0 OK Joining network... Network Joined OK at+sleep=0 OK Joining network... Network Joined OK at+sleep=1 OK [DEBUG] mDotEvent - JoinAccept [TRACE] Event: OK [TRACE] Flags Tx: 0 Rx: 0 RxData: 0 RxSlot: 0 LinkCheck: 0 JoinAccept: 1 [TRACE] Info: Status: 0 ACK: 0 Retries: 0 TxDR: 4 RxPort: 0 RxSize: 0 RSSI: 0 SNR: 0 Energy: 0 Margin: 0 Gateways: 0 [INFO] Packet RSSI: -79 dB SNR: 67 cB [DEBUG] mDotEvent - RxDone [DEBUG] Session saved to flash [DEBUG] wrote 256 bytes [DEBUG] file size: 256 bytes [TRACE] configuring RTC Alarm A to wakeup 10 seconds from now [TRACE] save timers: 0 0 0 0 0 0 0 [INFO] entering deepsleep (standby) mode 00000037[INFO] mDot Ready [TRACE] Initiating join... [TRACE] Join Network - Auto OTA [INFO] Restoring network session.. [DEBUG] Session restored from flash [DEBUG] set mask 0 0000 [DEBUG] set mask 1 0000 [DEBUG] set mask 2 0000 [DEBUG] set mask 3 0000 [DEBUG] set mask 4 0020 [DEBUG] Session saved to flash [DEBUG] wrote 256 bytes [DEBUG] file size: 256 bytes [TRACE] configuring RTC Alarm A to wakeup 10 seconds from now [TRACE] save timers: 0 0 0 0 0 0 0 [INFO] entering deepsleep (standby) mode 00000037[INFO] mDot Ready [TRACE] Initiating join... [TRACE] Join Network - Auto OTA [INFO] Restoring network session.. [DEBUG] Session restored from flash [DEBUG] set mask 0 0000 [DEBUG] set mask 1 0000 [DEBUG] set mask 2 0000 [DEBUG] set mask 3 0000 [DEBUG] set mask 4 0020 [DEBUG] Session saved to flash [DEBUG] wrote 256 bytes [DEBUG] file size: 256 bytes [TRACE] configuring RTC Alarm A to wakeup 10 seconds from now [INFO] entering sleep (stop) mode 00000037��[DEBUG] Session restored from flash [DEBUG] set mask 0 0000 [DEBUG] set mask 1 0000 [DEBUG] set mask 2 0000 [DEBUG] set mask 3 0000 [DEBUG] set mask 4 0020
I wonder if the issue was related to the corrupted flash. Can you reproduce the issue on a unit with functional flash?
Cheers,
Mike
Mike Fiore
BlockedDamian,
If you only included mbed-src in your project, you didn’t get any of the RTOS source files. They’re required by the mDot library because it uses the RTOS.
Even if you got all the source files, I think you’d still run into issues. Your eclipse environment needs to be configured exactly right in order for the build to succeed.
I think instead of configuring the environment yourself, you should do something similar to this example:
https://developer.mbed.org/users/c1728p9/notebook/debugging-mbed-50-projects-with-eclipse-and-pyocd/
This example uses mbed 5.x, but you could do approximately the same with mbed 2.0. You can get the mbed offline sdk (build tools and source code) from:
https://github.com/ARMmbed/mbed-os
for now, you’ll need to use an earlier revision as we don’t have full mbed 5.x support for the mDot yet. Check out tag mbed_lib_rev121 with “git checkout mbed_lib_rev121”.
Our wiki page has some info on how to properly run the workspace tools build and make commands to build mDot projects:
https://developer.mbed.org/teams/MultiTech/wiki/Using-the-mbed-SDK-for-mDot-development
Hope this helps!
Cheers,
Mike
Cheers,
Mike
Mike Fiore
BlockedDamian,
What version of mbed-src and libmDot did you use?
Can you post compile output?
Cheers,
Mike
Mike Fiore
BlockedDamian,
Are you using an IDE or the mbed offline SDK? Did you export from the online compiler?
Cheers,
Mike
Mike Fiore
BlockedGeoff,
Glad to hear you’re up and running!
I noticed that including FM_APPEND in the open mode caused a write after set to always append to the end of the file. I apologize, I should have mentioned that in my first post.
With respect to any previous issues with the library or any new ones you find, please let us know and we’ll try to help you out.
Thanks for choosing MultiTech!
Cheers,
Mike
Mike Fiore
BlockedYa Li,
Are you running the same code on both devices?
We had an issue on early mDots where the SPI select line to the LoRa radio would float up which woke up the radio and caused it to draw more current.
Please open a portal case at http://support.multitech.com/ so we can get more info and get this issue taken care of.
Cheers,
Mike
Mike Fiore
BlockedGeoff,
I wrote up a simple app to test this scenario. It creates a 1kB file and seeks to a few random positions and overwrites the original data. It then prints out the address it overwrote and the entire file so the operations can be verified. Here’s the debug from the test on my device:
[INFO] version: 2.0.3 [INFO] deleting user files deleting test_file.txt [1024] [INFO] creating 1kB file of 0x3B [INFO] seeking to 0x03C0 [INFO] writing 8 '0xA2' bytes to 0x03C0 [INFO] seeking to 0x039B [INFO] writing 8 '0xA2' bytes to 0x039B [INFO] seeking to 0x0191 [INFO] writing 8 '0xA2' bytes to 0x0191 [INFO] seeking to 0x0090 [INFO] writing 8 '0xA2' bytes to 0x0090 [INFO] seeking to 0x00C7 [INFO] writing 8 '0xA2' bytes to 0x00C7 [INFO] seeking to 0x00CD [INFO] writing 8 '0xA2' bytes to 0x00CD [INFO] seeking to 0x0058 [INFO] writing 8 '0xA2' bytes to 0x0058 [INFO] seeking to 0x008F [INFO] writing 8 '0xA2' bytes to 0x008F [INFO] seeking to 0x0303 [INFO] writing 8 '0xA2' bytes to 0x0303 [INFO] seeking to 0x002C [INFO] writing 8 '0xA2' bytes to 0x002C [INFO] file data: 0x0000 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0010 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0020 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B A2 A2 A2 A2 0x0030 A2 A2 A2 A2 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0040 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0050 3B 3B 3B 3B 3B 3B 3B 3B A2 A2 A2 A2 A2 A2 A2 A2 0x0060 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0070 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0080 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B A2 0x0090 A2 A2 A2 A2 A2 A2 A2 A2 3B 3B 3B 3B 3B 3B 3B 3B 0x00A0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x00B0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x00C0 3B 3B 3B 3B 3B 3B 3B A2 A2 A2 A2 A2 A2 A2 A2 A2 0x00D0 A2 A2 A2 A2 A2 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x00E0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x00F0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0100 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0110 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0120 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0130 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0140 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0150 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0160 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0170 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0180 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0190 3B A2 A2 A2 A2 A2 A2 A2 A2 3B 3B 3B 3B 3B 3B 3B 0x01A0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x01B0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x01C0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x01D0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x01E0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x01F0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0200 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0210 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0220 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0230 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0240 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0250 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0260 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0270 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0280 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0290 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x02A0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x02B0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x02C0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x02D0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x02E0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x02F0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0300 3B 3B 3B A2 A2 A2 A2 A2 A2 A2 A2 3B 3B 3B 3B 3B 0x0310 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0320 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0330 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0340 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0350 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0360 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0370 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0380 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x0390 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B A2 A2 A2 A2 A2 0x03A0 A2 A2 A2 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x03B0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x03C0 A2 A2 A2 A2 A2 A2 A2 A2 3B 3B 3B 3B 3B 3B 3B 3B 0x03D0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x03E0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 0x03F0 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B
I published the test application to my account. Feel free to try it yourself if you’d like.
https://developer.mbed.org/users/mfiore/code/mDot_file_seek/
Cheers,
Mike
Mike Fiore
BlockedZia,
Sorry for the delayed response.
The Temp portion of the payload is indeed 0x1CE. According to the payload format document the temp is transmitted in units of 0.0625 degrees C.
So all you need to do is multiply the value by 0.0625.
temp = int(0x1CE) * 0.0625
temp = 462 * 0.0625
temp = 28.875Cheers,
Mike
Mike Fiore
BlockedAndrew,
Are you referring to a situation like this?
mDot state Session state ---------- ------------- reset/boot N/A | getInstance() OTA mode: session is reset | AUTO_OTA mode w/preserve session off: session is reset | AUTO_OTA mode w/preserve session on: session restored | deepsleep() OTA mode: nothing happens | AUTO_OTA mode: session saved | wakeup OTA mode: nothing happens | AUTO_OTA mode: session restored
In AUTO_OTA mode, the session is saved when going into deepsleep regardless of the state of the session itself. Even if you don’t join or send packets, that session is still going to be saved.
Hope that answers your question!
Cheers,
Mike
-
This reply was modified 8 years, 8 months ago by
Mike Fiore.
Mike Fiore
BlockedAndrew,
When the mDot constructor is called (first call to mDot::getInstance), configuration is read from the flash.
OTA and AUTO_OTA join modes are similar like you’ve observed, but with one significant difference: when entering/waking from deepsleep the mDot will save/restore the network session to/from flash if it is in AUTO_OTA mode. This is to allow the mDot to go into deepsleep without needing to join every time it wakes up.
In short, AUTO_OTA mode manages the session for you across deepsleep while OTA mode does not. If you prefer, you can use OTA mode and the save/restore session functions to manage the session yourself.
Normally when the mDot is reset or cold-booted, the session is reset. The setPreserveSession function can be used to disable this behavior. The use case here is if there is an external processor interacting with the mDot via AT commands. The mDot can be powered off in between LoRa transactions to save power. The external processor would put the mDot in AUTO_OTA mode, call setPreserveSession(true), and manually save the network session before powering down the mDot. When the mDot gets powered back up, the saved session is restored instead of the session being reset. OTA mode could also be used in this scenario and the external processor would manually save and restore the session around a reset or power down of the mDot.
Hope this helps!
Cheers,
Mike
Mike Fiore
BlockedAndrew,
I’m guessing your mDot is in AUTO_OTA mode. In this mode, the mDot will save the session every time it goes into deepsleep so that the session can be restored after waking up (saving you a join). You can put your mDot into OTA mode instead and manage saving and restoring the session yourself if you desire. The saveNetworkSession() and restoreNetworkSession() functions can be used to save and restore your session.
That being said, it sounds like your mDot may have a bad flash part. Please open a support ticket on our portal.
Cheers,
Mike
Mike Fiore
BlockedJavier,
Version 2.0.3 of the mDot library is compatible with mbed 121 and mbed-rtos 117.
Are you developing with your mDot in a UDK2 (approximately 4″ square white board) or a MDK (a little bigger than the mDot)?
Cheers,
Mike
Mike Fiore
BlockedAndrew,
I apologize for the inferior experience you’ve had. We have had to recommend specific versions of the mbed and mbed-rtos libraries due to bugs or serious changes in the mbed libraries. Those kinds of issues are more obvious because we can only release binary builds of the mDot library. We are working hard to improve the mDot library and keep it compatible with the latest mbed versions.
Cheers,
Mike
Mike Fiore
BlockedAlejandro,
I’m sure you saw this, but I’m linking the answer on mbed for the benefit of others.
https://developer.mbed.org/questions/73255/Serial-port-at-300-baud/#answer10767
Cheers,
Mike
Mike Fiore
BlockedJonathan,
We don’t currently have an IAR version of the mDot library.
I took a peek at the CrossWorks page at http://www.rowley.co.uk/arm/ and saw that one of their supported toolchains is GNU GCC. You could try using that our GCC library build.
Cheers,
Mike
Mike Fiore
BlockedBoris,
Are you building your application using the mbed online compiler? If so, you can click on the folder for each library in your app and you should see information about it, including the revision, on the right side of the screen. Please let me know what versions of mbed and mbed-rtos you’re using.
Otherwise if you’re building offline, open a shell, cd into mbed/, and type git describe.
Cheers,
Mike
-
This reply was modified 8 years, 8 months ago by
-
AuthorPosts