Initial commit

This commit is contained in:
ChesterTseng 2017-10-15 14:36:37 +08:00
commit 6f665866d6
3358 changed files with 1106791 additions and 0 deletions

View file

@ -0,0 +1,59 @@
#include "FreeRTOS.h"
#include "task.h"
#include "example_uart_update.h"
#include <platform/platform_stdlib.h>
#define XMODEM_UART_IDX 0
#define XMODEM_UART_MUX 2
#define XMODEM_UART_BAUDRATE 115200
extern void OTU_FW_Update(u8, u8, u32);
int is_update_image_enable(gpio_t *gpio_uart_update_eable)
{
GPIO_InitTypeDef GPIO_Pin;
u32 active_state;
// gpio_t gpio_uart_update_eable;
int ret = 0;
gpio_init(gpio_uart_update_eable, PIN_NAME);
gpio_dir(gpio_uart_update_eable, PIN_INPUT); // Direction: Input
gpio_mode(gpio_uart_update_eable, PullUp); // Pull-High
// ret = gpio_read(&gpio_uart_update_eable);
return ret;
}
void example_uart_update_thread(void *param)
{
int count = 0;
gpio_t gpio_uart_update_eable;
is_update_image_enable(&gpio_uart_update_eable);
//polling MAX_WAIT_TIME*50ms
while(count <= MAX_WAIT_TIME)
{
printf("waitting update enable\r\n");
if(gpio_read(&gpio_uart_update_eable) == 0){
printf("update image enabled with xmodem protocol!\r\n");
//uart_ymodem();
OTU_FW_Update(XMODEM_UART_IDX, XMODEM_UART_MUX, XMODEM_UART_BAUDRATE);
break;
}
else{
//RtlMsleepOS(50);
rtw_msleep_os(50);
count++;
}
}
vTaskDelete(NULL);
}
void example_uart_update(void)
{
if(xTaskCreate(example_uart_update_thread, ((const char*)"example_uart_update_thread"), 512, NULL, tskIDLE_PRIORITY + 2, NULL) != pdPASS)
printf("\n\r%s xTaskCreate(init_thread) failed", __FUNCTION__);
}

View file

@ -0,0 +1,84 @@
#ifndef UART_UPDATE_H
#define UART_UPDATE_H
#include "PinNames.h"
#include "gpio_api.h"
//#include "hal_gpio.h"
//#include "osdep_api.h"
#include "osdep_service.h"
#define MAX_WAIT_TIME 100
#if defined(CONFIG_PLATFORM_8711B)
#define PIN_NAME PA_5
#else
#define PIN_NAME PC_2
typedef enum
{
GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */
GPIO_Mode_OUT = 0x01, /*!< GPIO Output Mode */
GPIO_Mode_INT = 0x02, /*!< GPIO Interrupt Mode */
GPIO_Mode_MAX = 0x03,
}GPIOMode_TypeDef;
/**
* @brief GPIO Configuration PullUp PullDown enumeration
*/
typedef enum
{
GPIO_PuPd_NOPULL = 0x00, /*!< GPIO Interrnal HIGHZ */
GPIO_PuPd_DOWN = 0x01, /*!< GPIO Interrnal Pull DOWN */
GPIO_PuPd_UP = 0x02, /*!< GPIO Interrnal Pull UP */
}GPIOPuPd_TypeDef;
/**
* @brief Setting interrupt's trigger type
*
* Setting interrupt's trigger type
*/
typedef enum
{
GPIO_INT_Trigger_LEVEL = 0x0, /**< This interrupt is level trigger */
GPIO_INT_Trigger_EDGE = 0x1, /**< This interrupt is edge trigger */
}GPIOIT_LevelType;
/**
* @brief Setting interrupt active mode
*
* Setting interrupt active mode
*/
typedef enum
{
GPIO_INT_POLARITY_ACTIVE_LOW = 0x0, /**< Setting interrupt to low active: falling edge or low level */
GPIO_INT_POLARITY_ACTIVE_HIGH = 0x1, /**< Setting interrupt to high active: rising edge or high level */
}GPIOIT_PolarityType;
/**
* @brief Enable/Disable interrupt debounce mode
*
* Enable/Disable interrupt debounce mode
*/
typedef enum
{
GPIO_INT_DEBOUNCE_DISABLE = 0x0, /**< Disable interrupt debounce */
GPIO_INT_DEBOUNCE_ENABLE = 0x1, /**< Enable interrupt debounce */
}GPIOIT_DebounceType;
typedef struct {
GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins. */
GPIOPuPd_TypeDef GPIO_PuPd; /*!< Specifies the operating Pull-up/Pull down for the selected pins. */
GPIOIT_LevelType GPIO_ITTrigger; /**< Interrupt mode is level or edge trigger */
GPIOIT_PolarityType GPIO_ITPolarity; /**< Interrupt mode is high or low active trigger */
GPIOIT_DebounceType GPIO_ITDebounce; /**< Enable or disable de-bounce for interrupt */
u32 GPIO_Pin; // Pin: [7:5]: port number, [4:0]: pin number
}GPIO_InitTypeDef;
#endif
//======================================================
void example_uart_update();
int is_update_image_enable(gpio_t *gpio_uart_update_eable);
extern int uart_ymodem(void);
#endif