+ APP_Initialize();
+
+
+ Remarks:
+ This routine must be called from the SYS_Initialize function.
+*/
+
+void APP_Initialize ( void );
+
+
+/*******************************************************************************
+ Function:
+ void APP_Tasks ( void )
+
+ Summary:
+ MPLAB Harmony Demo application tasks function
+
+ Description:
+ This routine is the Harmony Demo application's tasks function. It
+ defines the application's state machine and core logic.
+
+ Precondition:
+ The system and application initialization ("SYS_Initialize") should be
+ called before calling this.
+
+ Parameters:
+ None.
+
+ Returns:
+ None.
+
+ Example:
+
+ APP_Tasks();
+
+
+ Remarks:
+ This routine must be called from SYS_Tasks() routine.
+ */
+
+void APP_Tasks( void );
+
+bool APP_TIMER_Expired(uint32_t * timer, uint32_t seconds);
+bool APP_TIMER_Expired_ms(uint32_t * timer, uint32_t mseconds);
+bool APP_TIMER_Set(uint32_t * timer);
+
+#endif /* _APP_H */
+
+//DOM-IGNORE-BEGIN
+#ifdef __cplusplus
+}
+#endif
+//DOM-IGNORE-END
+
+/*******************************************************************************
+ End of File
+ */
+
diff --git a/software/aws-iot-ethernet/firmware/src/app1.c b/software/aws-iot-ethernet/firmware/src/app1.c
new file mode 100644
index 0000000..ab38a4d
--- /dev/null
+++ b/software/aws-iot-ethernet/firmware/src/app1.c
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ MPLAB Harmony Application Source File
+
+ Company:
+ Microchip Technology Inc.
+
+ File Name:
+ app1.c
+
+ Summary:
+ This file contains the source code for the MPLAB Harmony application.
+
+ Description:
+ This file contains the source code for the MPLAB Harmony application. It
+ implements the logic of the application's state machine and it may call
+ API routines of other MPLAB Harmony modules in the system, such as drivers,
+ system services, and middleware. However, it does not call any of the
+ system interfaces (such as the "Initialize" and "Tasks" functions) of any of
+ the modules in the system or make any assumptions about when those functions
+ are called. That is the responsibility of the configuration-specific system
+ files.
+ *******************************************************************************/
+
+// DOM-IGNORE-BEGIN
+/*******************************************************************************
+Copyright (c) 2013-2014 released Microchip Technology Inc. All rights reserved.
+
+Microchip licenses to you the right to use, modify, copy and distribute
+Software only when embedded on a Microchip microcontroller or digital signal
+controller that is integrated into your product or third party product
+(pursuant to the sublicense terms in the accompanying license agreement).
+
+You should refer to the license agreement accompanying this Software for
+additional information regarding your rights and obligations.
+
+SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
+IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
+CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
+OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
+CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
+SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+ *******************************************************************************/
+// DOM-IGNORE-END
+
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Included Files
+// *****************************************************************************
+// *****************************************************************************
+
+#include "app1.h"
+#include "peripheral/cmp/plib_cmp.h"
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Global Data Definitions
+// *****************************************************************************
+// *****************************************************************************
+struct switchMessage mySwitchMessage;
+#define APP_LOW_VOLTAGE 630
+#define APP_GOOD_VOLTAGE 650
+
+// *****************************************************************************
+/* Application Data
+
+ Summary:
+ Holds application data
+
+ Description:
+ This structure holds the application's data.
+
+ Remarks:
+ This structure should be initialized by the APP_Initialize function.
+
+ Application strings and buffers are be defined outside this structure.
+*/
+
+APP1_DATA app1Data;
+extern APP_DATA appData;
+extern BSP_DATA bspData;
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Application Callback Functions
+// *****************************************************************************
+// *****************************************************************************
+
+/* TODO: Add any necessary callback functions.
+*/
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Application Local Functions
+// *****************************************************************************
+// *****************************************************************************
+
+
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Application Initialization and State Machine Functions
+// *****************************************************************************
+// *****************************************************************************
+
+/*******************************************************************************
+ Function:
+ void APP1_Initialize ( void )
+
+ Remarks:
+ See prototype in app1.h.
+ */
+
+void APP1_Initialize ( void )
+{
+ /* Place the App state machine in its initial state. */
+ app1Data.state = APP1_STATE_INIT;
+ BSP_Initialize();
+ BSP_LED_LightShowSet(BSP_LED_CONNECTING_TO_AP);
+ app1Data.newPotSamp = 0;
+ app1Data.potTimer = 0;
+ app1Data.newVoltageSamp = 0;
+ app1Data.currIsLVD = true;
+
+ // Queue for switch data
+ app1Data.switchQueue = xQueueCreate( 20, sizeof(mySwitchMessage) );
+ if(app1Data.switchQueue == NULL) {
+ ; // Handle this
+ }
+ // Queue for LED light show data
+ // This will hold the requested Light Show state only
+ app1Data.lightShowQueue = xQueueCreate( 1, 4 );
+ if(app1Data.lightShowQueue == NULL) {
+ ; // Handle this
+ }
+ // Queue for potentiometer data
+ // This will hold the latest potentionmeter data
+ app1Data.potentiometerQueue = xQueueCreate( 20, sizeof(app1Data.potValue) );
+ if(app1Data.potentiometerQueue == NULL) {
+ ; // Handle this
+ }
+ xQueueReset(app1Data.switchQueue);
+ xQueueReset(app1Data.lightShowQueue);
+ xQueueReset(app1Data.potentiometerQueue);
+}
+
+
+/******************************************************************************
+ Function:
+ void APP1_Tasks ( void )
+
+ Remarks:
+ See prototype in app1.h.
+ */
+
+void APP1_Tasks ( void )
+{
+ /* Check the application's current state. */
+ switch ( app1Data.state )
+ {
+ /* Application's initial state. */
+ case APP1_STATE_INIT:
+ {
+ bool appInitialized = true;
+
+
+ if (appInitialized)
+ {
+ // Open the ADC drivers
+ DRV_ADC0_Open();
+ // DRV_ADC1_Open();
+ DRV_ADC_DigitalFilter0_Open();
+ // DRV_ADC_DigitalFilter1_Open();
+ DRV_ADC_Start();
+ app1Data.state = APP1_STATE_SERVICE_TASKS;
+ }
+ break;
+ }
+
+ case APP1_STATE_SERVICE_TASKS:
+ {
+ // BSP tasks that control switch and led functions
+ BSP_SYS_Tasks();
+
+ // Check if switches are pressed and send a message to the queue
+ if(BSP_SWITCH_SwitchGetState(BSP_SWITCH_1_PORT) != bspData.previousStateS1){
+ BSP_SWITCH_SwitchSetPreviousState(BSP_SWITCH_1_PORT, BSP_SWITCH_SwitchGetState(BSP_SWITCH_1_PORT));
+ mySwitchMessage.switchNum = BSP_SWITCH_1;
+ mySwitchMessage.switchVal = bspData.previousStateS1;
+ xQueueSendToBack( app1Data.switchQueue, &mySwitchMessage, 1 );
+ }
+ if(BSP_SWITCH_SwitchGetState(BSP_SWITCH_2_PORT) != bspData.previousStateS2){
+ BSP_SWITCH_SwitchSetPreviousState(BSP_SWITCH_2_PORT, BSP_SWITCH_SwitchGetState(BSP_SWITCH_2_PORT));
+ mySwitchMessage.switchNum = BSP_SWITCH_2;
+ mySwitchMessage.switchVal = bspData.previousStateS2;
+ xQueueSendToBack( app1Data.switchQueue, &mySwitchMessage, 1 );
+ }
+ if(BSP_SWITCH_SwitchGetState(BSP_SWITCH_3_PORT) != bspData.previousStateS3){
+ BSP_SWITCH_SwitchSetPreviousState(BSP_SWITCH_3_PORT, BSP_SWITCH_SwitchGetState(BSP_SWITCH_3_PORT));
+ mySwitchMessage.switchNum = BSP_SWITCH_3;
+ mySwitchMessage.switchVal = bspData.previousStateS3;
+ xQueueSendToBack( app1Data.switchQueue, &mySwitchMessage, 1 );
+ }
+ if(BSP_SWITCH_SwitchGetState(BSP_SWITCH_4_PORT) != bspData.previousStateS4){
+ BSP_SWITCH_SwitchSetPreviousState(BSP_SWITCH_4_PORT, BSP_SWITCH_SwitchGetState(BSP_SWITCH_4_PORT));
+ mySwitchMessage.switchNum = BSP_SWITCH_4;
+ mySwitchMessage.switchVal = bspData.previousStateS4;
+ xQueueSendToBack( app1Data.switchQueue, &mySwitchMessage, 1 );
+ }
+
+ // Trigger an ADC reading every one second for the pot
+ if((SYS_TMR_TickCountGet() - app1Data.potTimer) > (1000)){
+ app1Data.potTimer = SYS_TMR_TickCountGet();
+ DRV_ADC_Start();
+ }
+
+ // If the ADC reading is ready, see if value changed and send a message to queue
+ if(DRV_ADC_DigitalFilter0_DataIsReady()) {
+ app1Data.newPotSamp = (uint16_t)DRV_ADC_DigitalFilter0_DataRead();
+ uint32_t adcVal;
+ adcVal = app1Data.newPotSamp >> 6;
+ if(adcVal != app1Data.potValue) {
+ app1Data.potValue = adcVal;
+ app1Data.potChanged = true;
+ }
+
+ if(app1Data.potChanged){
+ xQueueSendToBack( app1Data.potentiometerQueue, &app1Data.potValue, 1 );
+ app1Data.potChanged = false;
+ }
+ }
+
+ // Check light show queue for a state, if exists, set state
+ if( uxQueueMessagesWaiting( app1Data.lightShowQueue ) > 0 ){
+ uint32_t lightShowVar;
+ xQueueReceive( app1Data.lightShowQueue, &lightShowVar, 1 );
+ BSP_LED_LightShowSet(lightShowVar);
+ }
+
+ break;
+ }
+
+ /* The default state should never be executed. */
+ default:
+ {
+ /* TODO: Handle error in application's state machine. */
+ break;
+ }
+ }
+}
+
+
+
+/*******************************************************************************
+ End of File
+ */
diff --git a/software/aws-iot-ethernet/firmware/src/app1.h b/software/aws-iot-ethernet/firmware/src/app1.h
new file mode 100644
index 0000000..af61a15
--- /dev/null
+++ b/software/aws-iot-ethernet/firmware/src/app1.h
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ MPLAB Harmony Application Header File
+
+ Company:
+ Microchip Technology Inc.
+
+ File Name:
+ app1.h
+
+ Summary:
+ This header file provides prototypes and definitions for the application.
+
+ Description:
+ This header file provides function prototypes and data type definitions for
+ the application. Some of these are required by the system (such as the
+ "APP_Initialize" and "APP_Tasks" prototypes) and some of them are only used
+ internally by the application (such as the "APP_STATES" definition). Both
+ are defined here for convenience.
+*******************************************************************************/
+
+//DOM-IGNORE-BEGIN
+/*******************************************************************************
+Copyright (c) 2013-2014 released Microchip Technology Inc. All rights reserved.
+
+Microchip licenses to you the right to use, modify, copy and distribute
+Software only when embedded on a Microchip microcontroller or digital signal
+controller that is integrated into your product or third party product
+(pursuant to the sublicense terms in the accompanying license agreement).
+
+You should refer to the license agreement accompanying this Software for
+additional information regarding your rights and obligations.
+
+SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
+IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
+CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
+OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
+CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
+SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+ *******************************************************************************/
+//DOM-IGNORE-END
+
+#ifndef _APP1_H
+#define _APP1_H
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Included Files
+// *****************************************************************************
+// *****************************************************************************
+
+#include
+ APP1_Initialize();
+
+
+ Remarks:
+ This routine must be called from the SYS_Initialize function.
+*/
+
+void APP1_Initialize ( void );
+
+
+/*******************************************************************************
+ Function:
+ void APP1_Tasks ( void )
+
+ Summary:
+ MPLAB Harmony Demo application tasks function
+
+ Description:
+ This routine is the Harmony Demo application's tasks function. It
+ defines the application's state machine and core logic.
+
+ Precondition:
+ The system and application initialization ("SYS_Initialize") should be
+ called before calling this.
+
+ Parameters:
+ None.
+
+ Returns:
+ None.
+
+ Example:
+
+ APP1_Tasks();
+
+
+ Remarks:
+ This routine must be called from SYS_Tasks() routine.
+ */
+
+void APP1_Tasks( void );
+
+
+#endif /* _APP1_H */
+
+//DOM-IGNORE-BEGIN
+#ifdef __cplusplus
+}
+#endif
+//DOM-IGNORE-END
+
+/*******************************************************************************
+ End of File
+ */
+
diff --git a/software/aws-iot-ethernet/firmware/src/app_nvm_support.c b/software/aws-iot-ethernet/firmware/src/app_nvm_support.c
new file mode 100644
index 0000000..61924f6
--- /dev/null
+++ b/software/aws-iot-ethernet/firmware/src/app_nvm_support.c
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ MPLAB Harmony Application Source File
+
+ Company:
+ Microchip Technology Inc.
+
+ File Name:
+ app_nvm_support.c
+
+ Summary:
+ This file contains the source code for the MPLAB Harmony application.
+
+ Description:
+ Contains support functions for writing application data to NVM.
+ *******************************************************************************/
+
+// DOM-IGNORE-BEGIN
+/*******************************************************************************
+Copyright (c) 2013-2014 released Microchip Technology Inc. All rights reserved.
+
+Microchip licenses to you the right to use, modify, copy and distribute
+Software only when embedded on a Microchip microcontroller or digital signal
+controller that is integrated into your product or third party product
+(pursuant to the sublicense terms in the accompanying license agreement).
+
+You should refer to the license agreement accompanying this Software for
+additional information regarding your rights and obligations.
+
+SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
+IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
+CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
+OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
+CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
+SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+ *******************************************************************************/
+// DOM-IGNORE-END
+
+#include "app_nvm_support.h"
+
+
+extern APP_DATA appData;
+
+bool APP_NVM_Erase(uint32_t nvm_dest_address)
+{
+ int tmp;
+
+ appData.nvmHandle = DRV_NVM_Open(0, DRV_IO_INTENT_READWRITE);
+ if(DRV_HANDLE_INVALID == appData.nvmHandle)
+ {
+ return false;
+ }
+
+ appData.gAppNVMMediaGeometry = DRV_NVM_GeometryGet(appData.nvmHandle);
+ if(NULL ==appData. gAppNVMMediaGeometry)
+ {
+ return false;
+ }
+
+ tmp = nvm_dest_address * (appData.gAppNVMMediaGeometry->geometryTable[2].numBlocks) / (DRV_NVM_MEDIA_SIZE * 1024);
+
+ DRV_NVM_Erase(appData.nvmHandle, &appData.nvmCommandHandle, tmp, 1);
+ if(appData.nvmCommandHandle == DRV_NVM_COMMAND_HANDLE_INVALID)
+ {
+ return false;
+ }
+
+ while(DRV_NVM_COMMAND_COMPLETED != DRV_NVM_CommandStatus(appData.nvmHandle, appData.nvmCommandHandle))
+ {
+ ;
+ }
+
+ DRV_NVM_Close(appData.nvmHandle);
+ return true;
+}
+
+bool APP_NVM_Write(uint32_t nvm_dest_address, uint8_t * data)
+{
+ int i, tmp;
+ uint8_t NVM_DATA_READ_BUFF_local[DRV_NVM_ROW_SIZE];
+ uint8_t NVM_DATA_BUFF_local[DRV_NVM_ROW_SIZE];
+
+ for (i = 0; i < DRV_NVM_ROW_SIZE; i++)
+ NVM_DATA_BUFF_local[i] = data[i];
+
+ appData.nvmHandle = DRV_NVM_Open(0, DRV_IO_INTENT_READWRITE);
+ if(DRV_HANDLE_INVALID == appData.nvmHandle){
+ return false;
+ }
+
+ appData.gAppNVMMediaGeometry = DRV_NVM_GeometryGet(appData.nvmHandle);
+ if(NULL == appData. gAppNVMMediaGeometry){
+ return false;
+ }
+
+ DRV_NVM_Read (appData.nvmHandle, &appData.nvmCommandHandle, NVM_DATA_READ_BUFF_local, nvm_dest_address, DRV_NVM_ROW_SIZE);
+ if (DRV_NVM_COMMAND_HANDLE_INVALID == appData.nvmCommandHandle) {
+ return false;;
+ }
+
+ tmp = nvm_dest_address * (appData.gAppNVMMediaGeometry->geometryTable[2].numBlocks) / (DRV_NVM_MEDIA_SIZE * 1024);
+ DRV_NVM_Erase(appData.nvmHandle, &appData.nvmCommandHandle, tmp, 1);
+ if(appData.nvmCommandHandle == DRV_NVM_COMMAND_HANDLE_INVALID){
+ return false;
+ }
+
+
+ while(DRV_NVM_COMMAND_COMPLETED != DRV_NVM_CommandStatus(appData.nvmHandle, appData.nvmCommandHandle))
+ {
+ ;
+ }
+
+ tmp = nvm_dest_address * (appData.gAppNVMMediaGeometry->geometryTable[1].numBlocks) / (DRV_NVM_MEDIA_SIZE * 1024);
+ DRV_NVM_Write(appData.nvmHandle, &appData.nvmCommandHandle, (uint8_t *)NVM_DATA_BUFF_local, tmp, 1);
+ if(DRV_NVM_COMMAND_HANDLE_INVALID == appData.nvmCommandHandle)
+ {
+ return false;
+ }
+
+ while(DRV_NVM_COMMAND_COMPLETED != DRV_NVM_CommandStatus(appData.nvmHandle, appData.nvmCommandHandle))
+ {
+ ;
+ }
+ DRV_NVM_Close(appData.nvmHandle);
+ return true;
+}
+
+bool APP_NVM_Read(uint32_t nvm_dest_address, uint8_t * buffer, uint32_t bufferLength)
+{
+ appData.nvmHandle = DRV_NVM_Open(0, DRV_IO_INTENT_READWRITE);
+ if(DRV_HANDLE_INVALID == appData.nvmHandle)
+ {
+ return false;
+ }
+
+ appData.gAppNVMMediaGeometry = DRV_NVM_GeometryGet(appData.nvmHandle);
+ if(NULL == appData.gAppNVMMediaGeometry)
+ {
+ return false;
+ }
+
+ DRV_NVM_Read(appData.nvmHandle, &appData.nvmCommandHandle, buffer, nvm_dest_address, bufferLength);
+ if(DRV_NVM_COMMAND_HANDLE_INVALID == appData.nvmCommandHandle)
+ {
+ return false;
+ }
+
+ while(DRV_NVM_COMMAND_COMPLETED != DRV_NVM_CommandStatus(appData.nvmHandle, appData.nvmCommandHandle))
+ {
+ ;
+ }
+
+ DRV_NVM_Close(appData.nvmHandle);
+ return true;
+
+}
\ No newline at end of file
diff --git a/software/aws-iot-ethernet/firmware/src/app_nvm_support.h b/software/aws-iot-ethernet/firmware/src/app_nvm_support.h
new file mode 100644
index 0000000..5e17613
--- /dev/null
+++ b/software/aws-iot-ethernet/firmware/src/app_nvm_support.h
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ MPLAB Harmony Application Source File
+
+ Company:
+ Microchip Technology Inc.
+
+ File Name:
+ app_nvm_support.h
+
+ Summary:
+ This file contains the source code for the MPLAB Harmony application.
+
+ Description:
+ Contains function support for writing application data to NVM
+ *******************************************************************************/
+
+// DOM-IGNORE-BEGIN
+/*******************************************************************************
+Copyright (c) 2013-2014 released Microchip Technology Inc. All rights reserved.
+
+Microchip licenses to you the right to use, modify, copy and distribute
+Software only when embedded on a Microchip microcontroller or digital signal
+controller that is integrated into your product or third party product
+(pursuant to the sublicense terms in the accompanying license agreement).
+
+You should refer to the license agreement accompanying this Software for
+additional information regarding your rights and obligations.
+
+SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
+IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
+CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
+OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
+CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
+SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+ *******************************************************************************/
+// DOM-IGNORE-END
+
+
+#ifndef APP_NVM_SUPPORT_H
+#define APP_NVM_SUPPORT_H
+
+#include "app.h"
+
+bool APP_NVM_Erase(uint32_t nvm_dest_address);
+bool APP_NVM_Write(uint32_t nvm_dest_address, uint8_t * data);
+bool APP_NVM_Read(uint32_t nvm_dest_address, uint8_t * buffer, uint32_t bufferLength);
+
+#endif /* APP_NVM_SUPPORT_H */
+
diff --git a/software/aws-iot-ethernet/firmware/src/bsp_config.h b/software/aws-iot-ethernet/firmware/src/bsp_config.h
new file mode 100755
index 0000000..36df275
--- /dev/null
+++ b/software/aws-iot-ethernet/firmware/src/bsp_config.h
@@ -0,0 +1,612 @@
+/*******************************************************************************
+ Board Support Package Header File.
+
+ Company:
+ Microchip Technology Inc.
+
+ File Name:
+ bsp_config.h
+
+ Summary:
+ Board Support Package Header file for IoT Wi-Fi n AWS IoT St.
+
+ Description:
+ This file contains constants, macros, type defintions and function
+ declarations required by the IoT Wi-Fi G AWS IoT Starter Kit
+
+*******************************************************************************/
+
+// DOM-IGNORE-BEGIN
+/*******************************************************************************
+Copyright (c) 2013 released Microchip Technology Inc. All rights reserved.
+
+Microchip licenses to you the right to use, modify, copy and distribute
+Software only when embedded on a Microchip microcontroller or digital signal
+controller that is integrated into your product or third party product
+(pursuant to the sublicense terms in the accompanying license agreement).
+
+You should refer to the license agreement accompanying this Software for
+additional information regarding your rights and obligations.
+
+SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
+IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
+CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
+OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
+CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
+SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+*******************************************************************************/
+// DOM-IGNORE-END
+
+#ifndef _BSP_CONFIG_H
+#define _BSP_CONFIG_H
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Included Files
+// *****************************************************************************
+// *****************************************************************************
+
+#include
+ //Initialize the BSP
+ BSP_Initialize();
+
+
+ Remarks:
+ None
+*/
+
+void BSP_Initialize(void);
+
+// *****************************************************************************
+/* Function:
+ void BSP_LEDStateSet(BSP_LED led, BSP_LED_STATE state);
+
+ Summary:
+ Controls the state of the LED.
+
+ Description:
+ This function allows the application to specify the state of the LED.
+
+ Precondition:
+ BSP_Initialize() should have been called.
+
+ Parameters:
+ led - The LED to operate on.
+ state - The state to be set.
+
+ Returns:
+ None.
+
+ Example:
+
+
+ // Initialize the BSP
+ BSP_Initialize();
+
+ // Switch on LED3 on the board
+ BSP_LEDStateSet(BSP_LED_3, BSP_LED_STATE_ON);
+
+ // Switch off LED4 on the board
+ BSP_LEDStateSet(BSP_LED_4, BSP_LED_STATE_OFF);
+
+
+
+ Remarks:
+ None
+*/
+
+void BSP_LEDStateSet(BSP_LED_PORT led_port, BSP_LED_CHANNEL led_channel, BSP_LED_STATE led_state);
+
+// *****************************************************************************
+/* Function:
+ BSP_LED_STATE BSP_LEDStateGet(BSP_LED led);
+
+ Summary:
+ Returns the present state of the LED.
+
+ Description:
+ This function returns the present state of the LED.
+
+ Precondition:
+ BSP_Initialize() should have been called.
+
+ Parameters:
+ led - The LED to whose status needs to be obtained.
+
+ Returns:
+ The ON/OFF state of the LED.
+
+ Example:
+
+
+ // Initialize the BSP
+ BSP_Initialize();
+
+ // Check if LED3 is off
+ if(BSP_LED_STATE_OFF == BSP_LEDStateGet(BSP_LED_3)
+ {
+ // Switch on the LED.
+ BSP_LEDStateSet(BSP_LED_3, BSP_LED_STATE_ON);
+ }
+
+
+
+ Remarks:
+ None
+*/
+
+BSP_LED_STATE BSP_LEDStateGet(BSP_LED_CHANNEL led_channel, BSP_LED_PORT led_port);
+
+// *****************************************************************************
+/* Function:
+ void BSP_LEDToggle(BSP_LED led);
+
+ Summary:
+ Toggles the state of the LED between BSP_LED_STATE_ON and BSP_LED_STATE_OFF.
+
+ Description:
+ This function toggles the state of the LED between BSP_LED_STATE_ON and
+ BSP_LED_STATE_OFF.
+
+ Precondition:
+ BSP_Initialize() should have been called.
+
+ Parameters:
+ led - The LED to toggle.
+
+ Returns:
+ None.
+
+ Example:
+
+
+ // Initialize the BSP
+ BSP_Initialize();
+
+ // Switch on LED3 on the board
+ BSP_LEDStateSet(BSP_LED_3, BSP_LED_STATE_ON);
+
+ // Switch off LED4 on the board
+ BSP_LEDStateSet(BSP_LED_4, BSP_LED_STATE_OFF);
+
+ // Toggle state of LED3
+ BSP_LEDToggle(BSP_LED_3);
+
+
+ Remarks:
+ None
+*/
+
+void BSP_LEDToggle(BSP_LED_CHANNEL led_channel, BSP_LED_PORT led_port);
+
+// *****************************************************************************
+/* Function:
+ void BSP_LEDOn(BSP_LED led);
+
+ Summary:
+ Switches ON the specified LED.
+
+ Description:
+ This function switches ON the specified LED.
+
+ Precondition:
+ BSP_Initialize() should have been called.
+
+ Parameters:
+ led - The LED to switch on.
+
+ Returns:
+ None.
+
+ Example:
+
+
+ // Initialize the BSP
+ BSP_Initialize();
+
+ // Switch on LED D3 on the board
+ BSP_LEDOn(BSP_LED_3);
+
+
+
+ Remarks:
+ None
+*/
+
+void BSP_LEDOn(BSP_LED_CHANNEL led_channel, BSP_LED_PORT led_port);
+
+// *****************************************************************************
+/* Function:
+ void BSP_LEDOff(BSP_LED led);
+
+ Summary:
+ Switches OFF the specified LED.
+
+ Description:
+ This function switches OFF the specified LED.
+
+ Precondition:
+ BSP_Initialize() should have been called.
+
+ Parameters:
+ led - The LED to switch off.
+
+ Returns:
+ None.
+
+ Example:
+
+
+ // Initialize the BSP
+ BSP_Initialize();
+
+ // Switch off LED D3 on the board
+ BSP_LEDOff(BSP_LED_3);
+
+
+
+ Remarks:
+ None
+*/
+
+void BSP_LEDOff(BSP_LED_CHANNEL led_channel, BSP_LED_PORT led_port);
+
+// *****************************************************************************
+/* Function:
+ void BSP_LEDAllOff();
+
+ Summary:
+ Switches OFF all LEDs.
+
+ Description:
+ This function switches OFF all LEDs.
+
+ Precondition:
+ BSP_Initialize() should have been called.
+
+ Parameters:
+ None.
+
+ Returns:
+ None.
+
+ Example:
+
+
+ // Initialize the BSP
+ BSP_Initialize();
+
+ // Switch off all LEDs
+ BSP_LEDAllOff();
+
+
+
+ Remarks:
+ None
+*/
+
+void BSP_LEDAllOff();
+
+// *****************************************************************************
+/* Function:
+ BSP_SWITCH_STATE BSP_SwitchStateGet(BSP_SWITCH switch);
+
+ Summary:
+ Returns the present state (pressed or not pressed) of the specified switch.
+
+ Description:
+ This function returns the present state (pressed or not pressed) of the
+ specified switch.
+
+ Precondition:
+ BSP_Initialize() should have been called.
+
+ Parameters:
+ switch - The switch whose state needs to be obtained.
+
+ Returns:
+ The pressed released state of the switch.
+
+ Example:
+
+
+ // Initialize the BSP
+ BSP_Initialize();
+
+ // Check the state of the switch.
+ if(BSP_SWITCH_STATE_PRESSED == BSP_SwitchStateGet(BSP_SWITCH_3))
+ {
+ // This means that Switch 3 on the board is pressed.
+ }
+
+
+
+ Remarks:
+ None
+*/
+
+BSP_SWITCH_STATE BSP_SWITCH_StateGet(BSP_SWITCH_CHANNEL bspSwitchChannel, BSP_SWITCH_PORT bspSwitchPort);
+
+//DGC_FINISH Comment this function prototype
+void BSP_LED_LightShow(BSP_LED_LIGHT_SHOW lightShow);
+void BSP_LED_LightShowSet(BSP_LED_LIGHT_SHOW lightshow);
+void BSP_SYS_Tasks ();
+int32_t BSP_SWITCH_DeviceDebounce(BSP_SWITCH_DEBOUNCE_T *handle, uint32_t curVal);
+BSP_SWITCH_STATE BSP_SWITCH_SwitchGetState(BSP_SWITCH_PORT switchId);
+void BSP_SWITCH_Tasks(void);
+void BSP_SWITCH_SwitchSetPreviousState(BSP_SWITCH_PORT switchId, BSP_SWITCH_STATE var);
+
+#endif //_BSP_CONFIG_H
+
+/*******************************************************************************
+ End of File
+*/
diff --git a/software/aws-iot-ethernet/firmware/src/bsp_sys_init.c b/software/aws-iot-ethernet/firmware/src/bsp_sys_init.c
new file mode 100755
index 0000000..a621f7c
--- /dev/null
+++ b/software/aws-iot-ethernet/firmware/src/bsp_sys_init.c
@@ -0,0 +1,572 @@
+/*******************************************************************************
+ Board Support Package Implementation.
+
+ Company:
+ Microchip Technology Inc.
+
+ File Name:
+ bsp_sys_init.c
+
+ Summary:
+ Board Support Package Implementation for IoT Wi-Fi n AWS IoT board.
+
+ Description:
+ This file contains the implementation of the Board Support Package for the
+ IoT Wi-Fi n AWS IoT board to help interface with the board.
+*******************************************************************************/
+
+// DOM-IGNORE-BEGIN
+/*******************************************************************************
+Copyright (c) 2012 released Microchip Technology Inc. All rights reserved.
+
+Microchip licenses to you the right to use, modify, copy and distribute
+Software only when embedded on a Microchip microcontroller or digital signal
+controller that is integrated into your product or third party product
+(pursuant to the sublicense terms in the accompanying license agreement).
+
+You should refer to the license agreement accompanying this Software for
+additional information regarding your rights and obligations.
+
+SOFTWARE AND DOCUMENTATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
+IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
+CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
+OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
+CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
+SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+*******************************************************************************/
+// DOM-IGNORE-END
+
+
+// *****************************************************************************
+// *****************************************************************************
+// Section: Included Files
+// *****************************************************************************
+// *****************************************************************************
+
+#include "bsp_config.h"
+#include "app.h"
+
+#define BSP_SWITCH_MS_ELLAPSED_TIME_TO_HZ(x) (1250/(x)) // convert time to frequency
+
+BSP_DATA bspData;
+
+// *****************************************************************************
+// *****************************************************************************
+// *****************************************************************************
+// Section: Interface Routines
+// *****************************************************************************
+// *****************************************************************************
+
+/*******************************************************************************
+ Function: void BSP_Initialize(void)
+
+ Summary:
+ Performs the neccassary actions to initialize a board
+
+ Description:
+ This routine performs the neccassary actions to initialize a board
+
+ Remarks:
+ Refer to bsp_config.h for usage information.
+
+*/
+
+void BSP_Initialize(void )
+{
+ /* Initialize the LED light show value and switch states*/
+ bspData.light_show = BSP_LED_EASY_CONFIGURATION;
+ bspData.previousStateS1 = BSP_SWITCH_STATE_DEASSERTED;
+ bspData.previousStateS2 = BSP_SWITCH_STATE_DEASSERTED;
+ bspData.previousStateS3 = BSP_SWITCH_STATE_DEASSERTED;
+ bspData.previousStateS4 = BSP_SWITCH_STATE_DEASSERTED;
+ bspData.s1 = BSP_SWITCH_STATE_DEASSERTED;
+ bspData.s2 = BSP_SWITCH_STATE_DEASSERTED;
+ bspData.s3 = BSP_SWITCH_STATE_DEASSERTED;
+ bspData.s4 = BSP_SWITCH_STATE_DEASSERTED;
+
+ /* Initialize switch state machine values for each switch object */
+ int i;
+ for(i=0 ; i+ Future home of Mchp error notification. +
+ + \ No newline at end of file diff --git a/software/aws-iot-ethernet/firmware/src/configuration_webpage/footer.inc b/software/aws-iot-ethernet/firmware/src/configuration_webpage/footer.inc new file mode 100644 index 0000000..e5477e0 --- /dev/null +++ b/software/aws-iot-ethernet/firmware/src/configuration_webpage/footer.inc @@ -0,0 +1,4 @@ + + +