Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:4ae09285aac1, committed 2017-05-29
- Comitter:
- michaelVisimid
- Date:
- Mon May 29 14:09:29 2017 +0000
- Commit message:
- Happy Gecko demo
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| mbed-dev.lib | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 4ae09285aac1 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon May 29 14:09:29 2017 +0000
@@ -0,0 +1,115 @@
+/***************************************************************************//**
+ * @file main.cpp
+ * @brief Demo program for the mbed asynchronous serial API.
+ *******************************************************************************
+ * @section License
+ * <b>(C) Copyright 2015 Silicon Labs, http://www.silabs.com</b>
+ *******************************************************************************
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
+ * obligation to support this Software. Silicon Labs is providing the
+ * Software "AS IS", with no express or implied warranties of any kind,
+ * including, but not limited to, any implied warranties of merchantability
+ * or fitness for any particular purpose or warranties against infringement
+ * of any proprietary rights of a third party.
+ *
+ * Silicon Labs will not be liable for any consequential, incidental, or
+ * special damages, or any other relief, or for any claim by any third party,
+ * arising from your use of this Software.
+ *
+ ******************************************************************************/
+
+#include "mbed.h"
+
+/*------------ Constant definitions --------------*/
+#define TX_PIN USBTX
+#define RX_PIN USBRX
+#define BRATE 115200
+#define LED_PIN LED0
+#define TOGGLE_RATE (0.5f)
+#define BUFF_LENGTH 5
+
+/*-------- Check if platform compatible ----------*/
+#if DEVICE_SERIAL_ASYNCH
+Serial test_connection(USBTX, USBRX);
+#else
+#error "Platform not compatible with Low Power APIs for Serial"
+#endif
+
+/*------------------ Variables -------------------*/
+LowPowerTicker blinker;
+bool blinking = false;
+event_callback_t serialEventCb;
+DigitalOut LED(LED_PIN);
+uint8_t rx_buf[BUFF_LENGTH + 1];
+
+/*------------------ Callbacks -------------------*/
+void blink(void) {
+ LED = !LED;
+}
+
+/**
+* This is a callback! Do not call frequency-dependent operations here.
+*
+* For a more thorough explanation, go here:
+* https://developer.mbed.org/teams/SiliconLabs/wiki/Using-the-improved-mbed-sleep-API#mixing-sleep-with-synchronous-code
+**/
+void serialCb(int events) {
+ /* Something triggered the callback, either buffer is full or 'S' is received */
+ unsigned char i;
+ if(events & SERIAL_EVENT_RX_CHARACTER_MATCH) {
+ //Received 'S', check for buffer length
+ for(i = 0; i < BUFF_LENGTH; i++) {
+ //Found the length!
+ if(rx_buf[i] == 'S') break;
+ }
+
+ // Toggle blinking
+ if(blinking) {
+ blinker.detach();
+ blinking = false;
+ } else {
+ blinker.attach(blink, TOGGLE_RATE);
+ blinking = true;
+ }
+ } else if (events & SERIAL_EVENT_RX_COMPLETE) {
+ i = BUFF_LENGTH - 1;
+ } else {
+ rx_buf[0] = 'E';
+ rx_buf[1] = 'R';
+ rx_buf[2] = 'R';
+ rx_buf[3] = '!';
+ rx_buf[4] = 0;
+ i = 3;
+ }
+
+ // Echo string, no callback
+ test_connection.write(rx_buf, i+1, 0, 0);
+
+ // Reset serial reception
+ test_connection.read(rx_buf, BUFF_LENGTH, serialEventCb, SERIAL_EVENT_RX_ALL, 'S');
+}
+
+/*-------------------- Main ----------------------*/
+int main() {
+ /* Very Simple Main (tm) */
+ serialEventCb.attach(serialCb);
+
+ /* Setup serial connection */
+ test_connection.baud(BRATE);
+ test_connection.printf("Low Power API test\n\nSend 'S' to toggle blinking\n");
+ test_connection.read(rx_buf, BUFF_LENGTH, serialEventCb, SERIAL_EVENT_RX_ALL, 'S');
+
+ /* Let the callbacks take care of everything */
+ while(1) sleep();
+}
\ No newline at end of file
diff -r 000000000000 -r 4ae09285aac1 mbed-dev.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-dev.lib Mon May 29 14:09:29 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/mbed_official/code/mbed-dev/#e614a9f1c9e2