TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.

Dependencies:   mbed

Revision:
0:400d8e75a8d0
Child:
1:e448e81c416f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Sep 06 15:19:36 2015 +0000
@@ -0,0 +1,303 @@
+//*****************************************************************************
+// main.c
+//
+// Reference code to demonstrate getting the current time using an NTP server.
+//
+// Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
+//
+//
+//  Redistribution and use in source and binary forms, with or without
+//  modification, are permitted provided that the following conditions
+//  are met:
+//
+//    Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+//
+//    Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the
+//    distribution.
+//
+//    Neither the name of Texas Instruments Incorporated nor the names of
+//    its contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+//  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+//  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+//  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+//  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+//  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+//  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+//*****************************************************************************
+
+//****************************************************************************
+//
+//! \addtogroup main
+//! @{
+//
+//****************************************************************************
+
+#include "mbed.h"
+
+// SimpleLink include
+#include "cc3100_simplelink.h"
+#include "cc3100.h"
+
+#include "httpserverapp.h"
+
+/* Free-RTOS includes */
+#include "osi.h"
+
+#include "cli_uart.h"
+#include "app_config.h"
+#include "myBoardInit.h"
+#include "camera_app.h"
+
+using namespace mbed_cc3100;
+
+
+/* Warning if pin changes are made below then the same changes have to be made in the following files.
+ * httpserverapp.cpp
+ * HttpCore.cpp
+ * HttpSocket.cpp
+ * HttpStatic.cpp
+ * fPtr_func.cpp
+ */ 
+
+/* On board leds */
+  DigitalOut led1(LED1);
+  DigitalOut led2(LED2);
+
+cc3100 _cc3100(NC, NC, p9, p10, p8, SPI(p5, p6, p7));//LPC1768  irq, nHib, cs, mosi, miso, sck
+//ArduCAM myCAM(OV5642, p14, SPI(p11, p12, p13), I2C(p28, p27));
+
+void initLEDs(void);
+void toggleLed(int ind);
+static void DisplayBanner(char * AppName);
+
+#define PRINT_BUF_LEN    128
+int8_t print_buf[PRINT_BUF_LEN];
+
+//*****************************************************************************
+//                          LOCAL DEFINES
+//*****************************************************************************
+#define APP_NAME		        "WebSocket"
+
+void initLEDs(void){
+	  
+    led1 = 1;
+    led2 = 1;    	
+	
+}
+
+void toggleLed(int ind){
+	
+	if(ind == 1){
+		led1 = !led1;
+	}
+	if(ind == 2){
+		led2 = !led2;
+	}	
+	
+}	
+
+//*****************************************************************************
+//
+//! Application startup display on UART
+//!
+//! \param  none
+//!
+//! \return none
+//!
+//*****************************************************************************
+
+//#ifndef NOTERM
+static void
+DisplayBanner(char * AppName)
+{
+
+    Report("\n\n\n\r");
+    Report(" *************************************************\n\r");
+    Report("	  CC3100 %s Application       \n\r", AppName);
+    Report(" *************************************************\n\r");
+    Report("\n\n\n\r");
+}
+//#endif
+
+//****************************************************************************
+//							MAIN FUNCTION
+//****************************************************************************
+int main(void) {
+
+   SCB->SHCSR |= 0x00070000; 
+   int rv = 0;
+   
+   //
+   // Configuring UART
+   //
+   CLI_Configure();
+   initLEDs();
+
+//   toggleLed(1);
+//#ifndef NOTERM
+    
+    memset(print_buf, 0x00, PRINT_BUF_LEN);
+    sprintf((char*) print_buf, " \r\nSystemCoreClock = %dMHz\r\n ", SystemCoreClock /1000000);
+    rv = Uart_Write((uint8_t *) print_buf);
+    if(rv < 0){
+    	while(1){
+    	toggleLed(1);
+    	wait(0.1);
+    	}
+    }
+    
+    //
+    // Display Application Banner
+    //
+    DisplayBanner(APP_NAME);
+    
+//#endif
+
+    //
+    // Start the SimpleLink Host
+    //
+    VStartSimpleLinkSpawnTask(SPAWN_TASK_PRIORITY);
+    //
+    // Start the HttpServer Task
+    //
+    //
+
+    osi_TaskCreate(HttpServerAppTask,
+                    "WebSocketApp",
+                        OSI_STACK_SIZE,
+                        NULL,
+                        HTTP_SERVER_APP_TASK_PRIORITY,
+                        NULL );
+
+    Uart_Write((uint8_t*)"HttpServerApp Initialized \n\r");
+
+    //
+    // Start the task scheduler
+    //
+    osi_start();
+
+	return 0;
+}
+
+/**
+  * @brief  This function handles Hard Fault exception.
+  * @param  None
+  * @retval None
+  */
+extern "C" void HardFault_Handler(void)
+{
+  /* Go to infinite loop when Hard Fault exception occurs */
+  Uart_Write((uint8_t*)"\n\rHardFault_Handler \n\r");
+  printf("Hard Fault Register SCB->HSFR     0x%X \r\n",SCB->HFSR);
+  printf("Fault bits set SCB->CFSR          0x%X \r\n",SCB->CFSR);
+  printf("Call to Memory Address SCB->BFAR  0x%X ERROR!\r\n",SCB->BFAR);
+  printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
+  Uart_Write((uint8_t*)"HardFault_Handler \n\r");
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles Memory Manage exception.
+  * @param  None
+  * @retval None
+  */
+extern "C" void MemManage_Handler(void)
+{ 
+  Uart_Write((uint8_t*)"\n\rMemManage_Handler \n\r");
+  printf("Fault bits set SCB->CFSR          0x%X \r\n",SCB->CFSR); 
+  printf("Call to Memory Address SCB->BFAR  0x%X ERROR!\r\n",SCB->BFAR);
+  printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
+  Uart_Write((uint8_t*)"MemManage_Handler \n\r");
+  /* Go to infinite loop when Memory Manage exception occurs */
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles Bus Fault exception.
+  * @param  None
+  * @retval None
+  */
+extern "C" void BusFault_Handler(void)
+{
+  Uart_Write((uint8_t*)"\n\rBusFault_Handler \n\r");
+  printf("Fault bits set SCB->CFSR          0x%X \r\n",SCB->CFSR); 
+  printf("Call to Memory Address SCB->BFAR  0x%X ERROR!\r\n",SCB->BFAR);
+  printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
+  Uart_Write((uint8_t*)"BusFault_Handler \n\r");
+  /* Go to infinite loop when Bus Fault exception occurs */
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles Usage Fault exception.
+  * @param  None
+  * @retval None
+  */
+extern "C" void UsageFault_Handler(void)
+{
+  Uart_Write((uint8_t*)"UsageFault_Handler \n\r");
+  /* Go to infinite loop when Usage Fault exception occurs */
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles SVCall exception.
+  * @param  None
+  * @retval None
+  */
+/*  
+extern "C" void SVC_Handler(void)
+{
+	Uart_Write((uint8_t*)"SVC_Handler \n\r");
+}
+*/
+/**
+  * @brief  This function handles Debug Monitor exception.
+  * @param  None
+  * @retval None
+  */
+extern "C" void DebugMon_Handler(void)
+{
+	Uart_Write((uint8_t*)"DebugMon_Handler \n\r");
+}
+
+/**
+  * @brief  This function handles PendSVC exception.
+  * @param  None
+  * @retval None
+  */
+/*  
+extern "C" void PendSV_Handler(void)
+{
+	Uart_Write((uint8_t*)"PendSV_Handler \n\r");
+}
+*/
+
+//*****************************************************************************
+//
+// Close the Doxygen group.
+//! @}
+//
+//*****************************************************************************
+
+
+