diff --git a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/can.c b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/can.c index 5d7c3a96..559c9f40 100644 --- a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/can.c +++ b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/can.c @@ -7,10 +7,18 @@ #include "gpio_protocol.h" +#include "moto_config.h" + #if DEVICE_MXC_A58 // #define CAN_USE_TX_DEMO #elif DEVICE_MXC_A59 // #define CAN_USE_TX_DEMO +#else + +#ifdef UI_VIEW_QUICKLY_ARRANGE +#define CAN_USE_TX_DEMO +#endif + #endif #define CAN_RX_BUF_NUM 32 @@ -692,37 +700,52 @@ int iCanGetTransmitErrorCount(CanPort_t *cap) } #ifdef CAN_USE_TX_DEMO +int cantx_count = 0; static void can_txdemo_thread(void *param) { CanPort_t *cap = param; - - // CanMsg txmsg = {0}; - // txmsg.IDE = CAN_Id_Standard; - // txmsg.DLC = 4; - // txmsg.Data[0] = 0x11; - // txmsg.Data[1] = 0x22; - // txmsg.Data[2] = 0x33; - // txmsg.Data[3] = 0x44; + uint8_t checksum = 0; CanMsg txmsg = {0}; - txmsg.StdId = 0x200; + txmsg.StdId = 0x213; + //txmsg.ExtId = 0x400; txmsg.IDE = CAN_Id_Standard; txmsg.DLC = 8; - txmsg.Data[0] = Get_sys_tcs_on_off()?0x8:0x00; - + txmsg.Data[0] = Get_sys_quickly_arrange()?0x0:0x10; + if(Get_sys_grade() >= 7) + txmsg.Data[1] = 0xFF;//档位 + else + txmsg.Data[1] = Get_sys_grade();//档位 + txmsg.Data[2] = Get_sys_velocity();//速度 + txmsg.Data[3] = 0x00; + txmsg.Data[4] = 0x00; + txmsg.Data[5] = 0x00; + txmsg.Data[6] = 0x00; + txmsg.Data[7] = 0x00; for (;;) { - txmsg.Data[0] = Get_sys_tcs_on_off()?0x8:0x00; - iCanWrite(cap, &txmsg, 1, 0); - vTaskDelay(pdMS_TO_TICKS(100)); + if(Get_sys_power_on_self_test() == 100){ + txmsg.Data[0] = Get_sys_quickly_arrange()?0x0:0x10; + if(Get_sys_grade() >= 7) + txmsg.Data[1] = 0xFF;//档位 + else + txmsg.Data[1] = Get_sys_grade(); + txmsg.Data[2] = Get_sys_velocity(); + iCanWrite(cap, &txmsg, 1, 0); + } + vTaskDelay(pdMS_TO_TICKS(10)); } } #endif uint8_t can101_flag = 0; uint8_t can_flag = 0; +extern uint8_t speed_flag; +extern uint8_t abs_speed_flag; + +uint8_t mile_flag = 0; static void can_rxdemo_thread(void *param) { CanPort_t *cap = param; - int tlv_data_value[8] = {0}; + uint8_t tlv_data_value[8] = {0}; for (;;) { CanMsg rxmsg[8] = {0}; @@ -733,72 +756,26 @@ static void can_rxdemo_thread(void *param) for (i = 0; i < revlen; i++) { for (j = 0; j < rxmsg[i].DLC; j++){ tlv_data_value[j] = rxmsg[i].Data[j]; - } - // printf("can>> Id = %03x",rxmsg[i].StdId); - #if DEVICE_MXC_A58 - switch(rxmsg[i].StdId){ - case 0x37B: - if(can_flag != 10) - can_flag = 10; - tcsworking_event_handing(tlv_data_value);//TCS - break; - case 0x12B: - if(can_flag != 10) - can_flag = 10; - tcsswitch_event_handing(tlv_data_value);//tcs开关 - break; - case 0x401: - break; - case 0x402://ECU故障码 - break; - case 0xA5://ABS故障码 - if(can_flag != 10) - can_flag = 10; - abs_dtc_event_handing(tlv_data_value); - break; - case 0xA3://ABS数据 - break; - case 0x101://发送机数据 - if(can101_flag != 10) - can101_flag = 10; - if(can_flag != 10) - can_flag = 10; - speed_event_handing(tlv_data_value); - break; - - default: - break; - } - #elif DEVICE_MXC_A59 - - switch(rxmsg[i].StdId){ - case 0x402://ECU故障码 - if(can_flag != 10) - can_flag = 10; - A59_dtc_event_handing(tlv_data_value); - break; - // case 0x101://发送机数据 - // if(can101_flag != 10) - // can101_flag = 10; - // if(can_flag != 10) - // can_flag = 10; - // speed_event_handing(tlv_data_value); - // break; - default: - break; - } - #else + } switch(rxmsg[i].StdId){ #ifdef SPEED_DATA_CAN + // 快排仪表 + case 0x141: //谟绅ABS + if(abs_speed_flag != 10) + abs_speed_flag = 10; + ASB_141_speed_event_handing(tlv_data_value); + break; case 0x101: - if(speed_flag != 5) - speed_flag = 5; + if(speed_flag != 10) + speed_flag = 10; speed_event_handing(tlv_data_value); break; case 0x400: - tcs_control_event_handing(tlv_data_value); + kp_control_event_handing(tlv_data_value);//快排信号指示灯 break; case 0x401: + if(mile_flag != 10) + mile_flag = 10; mil_control_event_handing(tlv_data_value);//引擎开关 break; #endif @@ -807,7 +784,6 @@ static void can_rxdemo_thread(void *param) break; default:break; } - #endif } } } @@ -828,14 +804,16 @@ int can_demo(void) CAN_FilterInitTypeDef canfilter = {0}; /* 只接收ID的第0位为1的帧 */ canfilter.MODE = 1; /* 单滤波器模式 */ - canfilter.ID = 0x37B; - canfilter.IDMASK = 0x7ff; + // canfilter.ID = 0x37B; + // canfilter.IDMASK = 0x7ff; + canfilter.ID = 0x402; + canfilter.IDMASK = 0X543; vCanSetFilter(cap, &canfilter); #endif /* Create a task to test read can msg */ if (xTaskCreate(can_rxdemo_thread, "canrx", configMINIMAL_STACK_SIZE, cap, - configMAX_PRIORITIES / 3, NULL) != pdPASS) { + configMAX_PRIORITIES / 2, NULL) != pdPASS) { printf("create can rxdemo task fail.\n"); return -1; } diff --git a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/rtc.c b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/rtc.c index c6a3c7e5..3eb52007 100644 --- a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/rtc.c +++ b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/rtc.c @@ -460,9 +460,9 @@ int rtc_init(void) alarm_irq_enable(0); rtc_read_time(&tm); - // if (tm.tm_year == 70) { - // rtc_set_time(&default_tm); - // } + if (tm.tm_year == 70) { + rtc_set_time(&default_tm); + } return 0; } diff --git a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c index 227271e9..876846c3 100644 --- a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c +++ b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c @@ -1090,6 +1090,7 @@ static void uart_rx_demo_thread(void *param) int uart_rx_demo(void) { + printf("3028 Bluetooth Communicator > UART2 OPEN.\r\n"); /* Create a task to process uart rx data */ if (xTaskCreate(uart_rx_demo_thread, "uartdemo", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES / 3, NULL) != pdPASS) { diff --git a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart_and_can.c b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart_and_can.c index 8ec36167..01498ea5 100644 --- a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart_and_can.c +++ b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart_and_can.c @@ -75,7 +75,7 @@ static void protocol_uart_tx_thread(void *param) for (;;) { if(uart_tx_flag){ - if (uart_time_request[0] != 0 && uart_time_request[0] == 0xAA) + if (uart_time_request[0] != 0 && (uart_time_request[0] == 0xAA || uart_time_request[0] == 0x27)) { // printf("UART3 tx-->>> "); for (uint8_t i = 0; i < uart_tx_flag; i++) @@ -331,7 +331,7 @@ static void protocol_uart_rx_thread(void *param) // for(j=0;j UART3 OPEN.\r\n"); /* Create a task to process uart rx data */ if (xTaskCreate(protocol_uart_rx_thread, "uart3rx", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES / 3, NULL) != pdPASS) diff --git a/MXC_A27-PCB4.5-270T/app/app_wifi_network.c b/MXC_A27-PCB4.5-270T/app/app_wifi_network.c index 161304c1..cdd446eb 100644 --- a/MXC_A27-PCB4.5-270T/app/app_wifi_network.c +++ b/MXC_A27-PCB4.5-270T/app/app_wifi_network.c @@ -52,296 +52,8 @@ static uint8_t file_state = UART_FILE_NORMAL;//文件接收状态 static uint8_t uup_file_type = UART_FILE_NORMAL;//文件接收状态 uint8_t wifi_file_state = UART_FILE_NORMAL;//文件接收状态 -#define BYTESPERPAGE 256 -#define PAGESPERSECTORS 32//32//16 -#define UUP_BUF_SIZE (BYTESPERPAGE * PAGESPERSECTORS) -#define NEW_APPLDR_CHECKSUM_OFFSET 0x14 static unsigned int checksum = 0,calc_checksum = 0xffffffff,test_checksum = 0xffffffff; -#define NEW_APPFOOSET 0x17F0000 -#define AMT630_BIN_MAX_SIZE 0x700000 - -static uint32_t uup_burn_offset; -// static unsigned char uup_buf[4096]; -static unsigned char uup_buf[8192]; -static unsigned int uup_buf_len = 0; -static unsigned int uup_buf_len_detection = 0; -static uint8_t checksum_flag = 0; - -static int test_flag = 0; -// static int number = 0; -static void ota_update(char *framebuf, size_t len) -{ - unsigned int framelen; - framelen = len; - sfud_flash *sflash = sfud_get_device(0); - if(strcmp(framebuf, "AT_OTA_FINISH") == 0){ - if(file_state == UART_FILE_FILEXFER) - file_state = UART_FILE_FINISH; - } - - switch(file_state){ - case UART_FILE_NORMAL://检测是否是升级 - if(strcmp(framebuf, "AT_OTA_START") == 0) - file_state = UART_FILE_TYPE; - break; - case UART_FILE_TYPE://检测传输文件类型 - if(strncmp(framebuf, "AT_OTA_TYPE=",12) == 0 && (framelen == 13)){ - uup_file_type = framebuf[12] - '0'; - printf("uup_file_type = %d .\r\n",uup_file_type); - if(uup_file_type<6){ - //擦除flash - uup_burn_offset = NEW_APPFOOSET; - printf("start erase add %X , size %X .\r\n",uup_burn_offset,AMT630_BIN_MAX_SIZE); - if(sfud_erase(sflash, uup_burn_offset, AMT630_BIN_MAX_SIZE)==SFUD_SUCCESS){ - vTaskDelay(100); - printf("UART_FRAME_START sfud erase ok.\n"); - }else{ - vTaskDelay(100); - printf("UART_FRAME_START sfud erase fail.\n"); - } - checksum_flag = 1; - calc_checksum = 0xffffffff; - test_checksum = 0xffffffff; - test_flag = 0; - uup_buf_len =0; - checksum = 0; - // number = 0; - file_state = UART_FILE_START; - }else - file_state = UART_FILE_NORMAL; - }else{ - file_state = UART_FILE_NORMAL; - } - - break; - case UART_FILE_START://第一包数据 用于获取当前数据包的校验和 - if (uup_file_type == UART_FILE_AMT630H) {//代码文件 - unsigned int magic = framebuf[0] | (framebuf[1] << 8) | (framebuf[2] << 16) | (framebuf[3] << 24); - if (magic != UPFILE_APP_MAGIC) { - printf("Wrong app file magic. 0x%08X\n",magic); - file_state = UART_FILE_NORMAL; - break; - } - unsigned char *tmp = framebuf + NEW_APPLDR_CHECKSUM_OFFSET; - checksum = tmp[0] | (tmp[1] <<8) | (tmp[2] << 16) | (tmp[3] << 24); - }else if (uup_file_type == UART_FILE_BOOTANIM) {//动画文件 - BANIHEADER *header = (BANIHEADER *)&framebuf[0]; - if (header->magic != MKTAG('B', 'A', 'N', 'I')) { - printf("Wrong animation file magic.\n"); - file_state = UART_FILE_NORMAL; - break; - } - checksum = header->checksum; - }else if (uup_file_type == UART_FILE_ROM) {//资源文件 - RomHeader *header = (RomHeader *)&framebuf[0]; - if (header->magic != MKTAG('R', 'O', 'M', 'A')) { - printf("Wrong resource file magic.\n"); - file_state = UART_FILE_NORMAL; - break; - } - checksum = header->checksum; - } - printf("uup_file_type = %d ,No1.checksum = 0x%X\n",uup_file_type,checksum); - - uup_buf_len_detection = (uup_buf_len + framelen)>UUP_BUF_SIZE?(UUP_BUF_SIZE-uup_buf_len):0; - // printf("1-- framelen = %d uup_buf_len_detection = %d .\r\n",framelen,uup_buf_len_detection); - if(!uup_buf_len_detection){ - memcpy(uup_buf + uup_buf_len, framebuf, framelen); - uup_buf_len += framelen; - if (uup_buf_len == UUP_BUF_SIZE) { - if(!checksum_flag) - test_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, test_checksum);//计算校验和 - sfud_write(sflash, uup_burn_offset, UUP_BUF_SIZE, uup_buf); - if(checksum_flag){ - if (uup_file_type == UART_FILE_AMT630H) {//代码文件 - unsigned int *tmp = (unsigned int *)(uup_buf + NEW_APPLDR_CHECKSUM_OFFSET); - *tmp = 0; - }else if (uup_file_type == UART_FILE_BOOTANIM) {//动画文件 - BANIHEADER *pheader = (BANIHEADER *)uup_buf; - pheader->checksum = 0; - }else if (uup_file_type == UART_FILE_ROM) {//资源文件 - RomHeader *pheader = (RomHeader *)uup_buf; - pheader->checksum = 0; - } - checksum_flag = 0; - test_flag = 1; - - } - - - calc_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, calc_checksum);//计算校验和 - if(test_flag){ - test_checksum = calc_checksum; - printf("test_checksum == calc_checksum 0x%08X.\r\n",test_checksum); - test_flag = 0; - } - - - if(calc_checksum != test_checksum){ - printf("error!!!test_checksum=0x%08X,calc_checksum=0x%08X.\r\n",test_checksum,calc_checksum); - } - uup_buf_len =0; - uup_burn_offset += UUP_BUF_SIZE; - //number++; - //printf("number =%d,checksum = 0x%08X.\n",number,calc_checksum,checksum); - } - }else{ - memcpy(uup_buf + uup_buf_len, framebuf, uup_buf_len_detection); - uup_buf_len += uup_buf_len_detection; - - if (uup_buf_len == UUP_BUF_SIZE) { - if(!checksum_flag) - test_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, test_checksum);//计算校验和 - sfud_write(sflash, uup_burn_offset, UUP_BUF_SIZE, uup_buf); - if(checksum_flag){ - if (uup_file_type == UART_FILE_AMT630H) {//代码文件 - unsigned int *tmp = (unsigned int *)(uup_buf + NEW_APPLDR_CHECKSUM_OFFSET); - *tmp = 0; - }else if (uup_file_type == UART_FILE_BOOTANIM) {//动画文件 - BANIHEADER *pheader = (BANIHEADER *)uup_buf; - pheader->checksum = 0; - }else if (uup_file_type == UART_FILE_ROM) {//资源文件 - RomHeader *pheader = (RomHeader *)uup_buf; - pheader->checksum = 0; - unsigned int *tmp = (unsigned int *)(uup_buf + 0x0F); - } - checksum_flag = 0; - test_flag = 1; - } - - calc_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, calc_checksum);//计算校验和 - if(test_flag){ - test_checksum = calc_checksum; - printf("test_checksum == calc_checksum 0x%08X.\r\n",test_checksum); - test_flag = 0; - } - if(calc_checksum != test_checksum){ - printf("error!!!test_checksum=0x%08X,calc_checksum=0x%08X.\r\n",test_checksum,calc_checksum); - } - uup_buf_len =0; - uup_burn_offset += UUP_BUF_SIZE; - //number++; - //printf("number =%d,checksum = 0x%08X.\n",number,calc_checksum,checksum); - } - // printf("2-- (framelen - uup_buf_len_detection) = %d .\r\n",(framelen - uup_buf_len_detection)); - memcpy(uup_buf + uup_buf_len, framebuf, (framelen - uup_buf_len_detection)); - uup_buf_len += (framelen - uup_buf_len_detection); - } - // printf(">>UART_FILE_FILEXFER.\r\n"); - file_state = UART_FILE_FILEXFER; - - break; - case UART_FILE_FILEXFER://传输过程中 - - uup_buf_len_detection = (uup_buf_len + framelen)>UUP_BUF_SIZE?(UUP_BUF_SIZE-uup_buf_len):0; - // printf("uup_buf_len_detection=%d.\r\n",uup_buf_len_detection); - if(!uup_buf_len_detection){ - memcpy(uup_buf + uup_buf_len, framebuf, framelen); - uup_buf_len += framelen; - // printf("uup_buf_len = %d .\r\n",uup_buf_len); - - if (uup_buf_len == UUP_BUF_SIZE) { - if(!checksum_flag) - test_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, test_checksum);//计算校验和 - sfud_write(sflash, uup_burn_offset, UUP_BUF_SIZE, uup_buf); - if(checksum_flag){ - if (uup_file_type == UART_FILE_AMT630H) {//代码文件 - unsigned int *tmp = (unsigned int *)(uup_buf + NEW_APPLDR_CHECKSUM_OFFSET); - *tmp = 0; - }else if (uup_file_type == UART_FILE_BOOTANIM) {//动画文件 - BANIHEADER *pheader = (BANIHEADER *)uup_buf; - pheader->checksum = 0; - }else if (uup_file_type == UART_FILE_ROM) {//资源文件 - RomHeader *pheader = (RomHeader *)uup_buf; - pheader->checksum = 0; - unsigned int *tmp = (unsigned int *)(uup_buf + 0x0F); - } - checksum_flag = 0; - test_flag = 1; - } - - calc_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, calc_checksum);//计算校验和 - if(test_flag){ - test_checksum = calc_checksum; - printf("test_checksum == calc_checksum 0x%08X.\r\n",test_checksum); - test_flag = 0; - } - if(calc_checksum != test_checksum){ - printf("error!!!test_checksum=0x%08X,calc_checksum=0x%08X.\r\n",test_checksum,calc_checksum); - } - uup_buf_len =0; - uup_burn_offset += UUP_BUF_SIZE; - //number++; - //printf("number =%d,checksum = 0x%08X.\n",number,calc_checksum,checksum); - } - }else{ - memcpy(uup_buf + uup_buf_len, framebuf, uup_buf_len_detection); - uup_buf_len += uup_buf_len_detection; - // printf("2---------------- uup_buf_len = %d .\r\n",uup_buf_len); - - if (uup_buf_len == UUP_BUF_SIZE) { - if(!checksum_flag) - test_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, test_checksum);//计算校验和 - sfud_write(sflash, uup_burn_offset, UUP_BUF_SIZE, uup_buf); - if(checksum_flag){ - if (uup_file_type == UART_FILE_AMT630H) {//代码文件 - unsigned int *tmp = (unsigned int *)(uup_buf + NEW_APPLDR_CHECKSUM_OFFSET); - *tmp = 0; - }else if (uup_file_type == UART_FILE_BOOTANIM) {//动画文件 - BANIHEADER *pheader = (BANIHEADER *)uup_buf; - pheader->checksum = 0; - }else if (uup_file_type == UART_FILE_ROM) {//资源文件 - RomHeader *pheader = (RomHeader *)uup_buf; - pheader->checksum = 0; - unsigned int *tmp = (unsigned int *)(uup_buf + 0x0F); - } - checksum_flag = 0; - test_flag = 1; - } - - calc_checksum = xcrc32(uup_buf, UUP_BUF_SIZE, calc_checksum);//计算校验和 - if(test_flag){ - test_checksum = calc_checksum; - printf("test_checksum == calc_checksum 0x%08X.\r\n",test_checksum); - test_flag = 0; - } - if(calc_checksum != test_checksum){ - printf("error!!!test_checksum=0x%08X,calc_checksum=0x%08X.\r\n",test_checksum,calc_checksum); - } - uup_buf_len =0; - uup_burn_offset += UUP_BUF_SIZE; - // number++; - // printf("number =%d,checksum = 0x%08X.\n",number,calc_checksum,checksum); - } - memcpy(uup_buf + uup_buf_len, framebuf, (framelen - uup_buf_len_detection)); - uup_buf_len += (framelen - uup_buf_len_detection); - // printf("2----uup_buf_len = %d .\r\n",uup_buf_len); - } - // file_state = UART_FILE_FILEXFER; - break; - case UART_FILE_FINISH://传输完成 - if(uup_buf_len){//若最后一包数据不为0 则存数据并且继续计算校验和 - sfud_write(sflash, uup_burn_offset, uup_buf_len, uup_buf); - test_checksum = xcrc32(uup_buf, uup_buf_len, test_checksum);//计算校验和 - calc_checksum = xcrc32(uup_buf, uup_buf_len, calc_checksum); - printf("enter2 uup_buf_len =%d calc_checksum================0x%08X,test_checksum=0x%08X\n",uup_buf_len,calc_checksum,test_checksum); - } - printf("calc_checksum = 0x%08X,checksum = 0x%08X.\n",calc_checksum,checksum); - printf("test_checksum=0x%08X.\r\n",test_checksum); - if (calc_checksum != checksum) { - printf("fail !!!!!!!!!!!!\n"); - }else - printf("whole crc check after burn ok!\n"); - file_state = UART_FILE_NORMAL; - break; - default: - break; - } - if(file_state != UART_FILE_FILEXFER) - printf("now > file_state = %d .\r\n",file_state); -} - static int uup_rx_state = 0; #define UUP_PACKET_SIZE 128 #define UUP_MAX_FRAME_LEN (UUP_PACKET_SIZE + 16) @@ -438,7 +150,6 @@ static void wifi_update_judge(char *uartrx, size_t len){ uup_rx_state++; wifi_ota_request[6] = Get_sys_softwar_host(); }else{ - uup_rx_state = 0; } break; @@ -559,15 +270,9 @@ static void wifi_ota_update(char *framebuf, size_t len) wifi_update_judge(framebuf,len);//升级判断 printf("wifi_file_state > %d.\r\n",wifi_file_state); break; - // case UART_FILE_TYPE://检测传输文件类型 - // break; case UART_FILE_START://升级流程 wifi_update_technological_process(framebuf,len);//升级流程 break; - // case UART_FILE_FILEXFER://传输过程中 - // break; - // case UART_FILE_FINISH://传输完成 - // break; default: break; } @@ -659,13 +364,8 @@ void app_wifi_update_demo(void) printf("client is disconnected\r\n"); continue; } - // printf("recv len:%d.\r\n", ret); if(timeout) timeout = 0; - // if(ret<100) - // printf("recv len:%d %s\r\n", ret, buf); - // else - // printf("recv len:%d.\r\n", ret); wifi_ota_update(buf,ret); memset(buf, 0, sizeof(buf)); } @@ -680,11 +380,7 @@ exit: static void wifi_update_rx_thread(void *param) { - // vTaskDelay(7000); - // while(1){ - app_wifi_update_demo(); - // vTaskDelay(3000); - // } + app_wifi_update_demo(); } int wifi_update_init(void){ @@ -698,120 +394,3 @@ int wifi_update_init(void){ return 0; } -#if 0 -int test_udp_client(const char *ip_str, int port) -{ - /* socket文件描述符 */ - int sock_fd = -1; - - /* 建立udp socket */ - sock_fd = socket(AF_INET, SOCK_DGRAM, 0); - if(sock_fd < 0) - { - printf("client socket create failed.\r\n"); - goto exit; - } - - /* 设置address */ - struct sockaddr_in addr_serv; - int len; - memset(&addr_serv, 0, sizeof(addr_serv)); - addr_serv.sin_family = AF_INET; - addr_serv.sin_addr.s_addr = inet_addr(ip_str); - addr_serv.sin_port = htons(port); - len = sizeof(addr_serv); - - - int send_num; - int recv_num; - char send_buf[20] = "hey, who are you?"; - char recv_buf[20]; - - printf("###client send: %s\n", send_buf); - - send_num = sendto(sock_fd, send_buf, strlen(send_buf), 0, (struct sockaddr *)&addr_serv, len); - - if(send_num < 0) - { - printf("sendto erro\r\n"); - goto exit; - } - - recv_num = recvfrom(sock_fd, recv_buf, sizeof(recv_buf), 0, (struct sockaddr *)&addr_serv, (socklen_t *)&len); - - if(recv_num <= 0) - { - printf("socket recv failed\r\n"); - goto exit; - } - - recv_buf[recv_num] = '\0'; - printf("client receive %d bytes: %s\n", recv_num, recv_buf); -exit: - - if (-1 != sock_fd) - close(sock_fd); - - return 0; -} - -int test_udp_server(int port) -{ - int sock_fd = socket(AF_INET, SOCK_DGRAM, 0); - if(sock_fd < 0) - { - printf("server socket create failed.\r\n"); - goto exit; - } - - struct sockaddr_in addr_serv; - int len; - memset(&addr_serv, 0, sizeof(struct sockaddr_in)); - addr_serv.sin_family = AF_INET; - addr_serv.sin_port = htons(port); - - addr_serv.sin_addr.s_addr = htonl(INADDR_ANY); - len = sizeof(addr_serv); - - if(bind(sock_fd, (struct sockaddr *)&addr_serv, sizeof(addr_serv)) < 0) - { - printf("bind error\r\n"); - goto exit; - } - - int recv_num; - int send_num; - char send_buf[20] = "i am server!"; - char recv_buf[20]; - struct sockaddr_in addr_client; - - while(1) - { - printf("server wait:\n"); - - recv_num = recvfrom(sock_fd, recv_buf, sizeof(recv_buf), 0, (struct sockaddr *)&addr_client, (socklen_t *)&len); - - if(recv_num < 0) - { - printf("recvfrom error:\r\n"); - goto exit; - } - - recv_buf[recv_num] = '\0'; - printf("server receive %d bytes: %s\n", recv_num, recv_buf); - - send_num = sendto(sock_fd, send_buf, recv_num, 0, (struct sockaddr *)&addr_client, len); - - if(send_num <= 0) - { - printf("sendto error:"); - break; - } - } -exit: - if (-1 != sock_fd) - close(sock_fd); - - return 0; -} -#endif diff --git a/MXC_A27-PCB4.5-270T/app/carlink/common/mycommon.h b/MXC_A27-PCB4.5-270T/app/carlink/common/mycommon.h index 6efb91fa..8dcdc25d 100644 --- a/MXC_A27-PCB4.5-270T/app/carlink/common/mycommon.h +++ b/MXC_A27-PCB4.5-270T/app/carlink/common/mycommon.h @@ -131,6 +131,19 @@ typedef struct __carplay_cfg_info }carplay_cfg_info; +typedef struct _carlink_flash_io +{ + uint32_t (*get_data_arae_size)(void* ctx); + uint32_t (*get_flash_block_erase_size)(void* ctx); + int32_t (*op_flash)(void* flash_handle, void* ctx, int open); + int32_t (*read_data)(void* flash_handle, void *data, uint32_t length, uint32_t offset, void* ctx); + int32_t (*write_data)(void* flash_handle, void *data, uint32_t length, uint32_t offset, void* ctx); + void* ctx; + void* flash_handle; +} carlink_flash_io; +void register_carlink_flash_io_interface(carlink_flash_io *handle); + +#if 0 typedef struct __auto_cfg_info { short width;//pixel @@ -142,10 +155,10 @@ typedef struct __auto_cfg_info bool disable_carplay_audio; } auto_cfg_info; - +#endif extern carplay_cfg_info *g_link_info; -extern auto_cfg_info *g_auto_link_info; +//extern auto_cfg_info *g_auto_link_info; #ifdef __cplusplus } diff --git a/MXC_A27-PCB4.5-270T/app/main_awtk.c b/MXC_A27-PCB4.5-270T/app/main_awtk.c index 722a0de7..a3b292c8 100644 --- a/MXC_A27-PCB4.5-270T/app/main_awtk.c +++ b/MXC_A27-PCB4.5-270T/app/main_awtk.c @@ -726,6 +726,8 @@ extern int get_usb_mode(); extern int ark_network_init(void); #endif +extern void Moto_speed_timer(void); + void awtk_thread(void *data) { printf("awtk thread start.\n"); @@ -774,10 +776,9 @@ void awtk_thread(void *data) #endif /* uart rx demo */ - printf("MXC_A58 > UART3 OPEN.\r\n"); uart_communicates_with_bt(); - printf("MXC_A58 > UART2 OPEN.\r\n"); - uart_rx_demo(); + + // uart_rx_demo(); /* can demo */ @@ -861,6 +862,8 @@ void awtk_thread(void *data) // static float cell_value = 0; // static uint8_t cell_count = 0; + Moto_speed_timer(); + while(1) { #ifdef TASK_STATUS_MONITOR diff --git a/MXC_A27-PCB4.5-270T/app/moto/protocol/can_protocol.c b/MXC_A27-PCB4.5-270T/app/moto/protocol/can_protocol.c index 59ef6453..67b4c738 100644 --- a/MXC_A27-PCB4.5-270T/app/moto/protocol/can_protocol.c +++ b/MXC_A27-PCB4.5-270T/app/moto/protocol/can_protocol.c @@ -1,5 +1,6 @@ #include "awtk.h" #include "can_protocol.h" +#include "moto_config.h" uint8_t tcs_twinkle = 0; uint8_t tcs_switch = 0; @@ -22,33 +23,6 @@ void tcsswitch_event_handing(int *buf){ if(tcs_data<=1) tcs_switch = tcs_data; } -//101 -void speed_event_handing(int *buf){ - uint16_t eng_temp = 0; - uint16_t data = 0; - uint8_t state_data = 0; - double buf_value = 0; - *(buf++); - *(buf++); - *(buf++); - *(buf++); - - data = *(buf++) &0xFF; - data = (*(buf++)&0xFF) | data<<8; - - buf_value = data; - if(buf_value>5280) - buf_value = 255; - else if(buf_value>2730) - buf_value = ((buf_value*0.1)-273); - else - buf_value = 0; - eng_temp = (int)buf_value; - Set_sys_can_temp(eng_temp); - state_data = *(buf++); - Set_sys_can_state(state_data); - -} //0xA5 void abs_dtc_event_handing(int *buf){ @@ -71,57 +45,3 @@ void ecu_dtc_event_handing2(int *buf){ dtc[0] = *(buf++)&0xFF; Set_can_abs_dtc(dtc); } - -uint8_t dtc_flag = 0; -void A59_dtc_event_handing(int *buf){ - uint32_t sum,sum1,sum2; - sum = 0; - sum1 = *(buf++)&0xFF; - *(buf++)&0xFF; - sum2 = *(buf++)&0xFF; - ////低位再前 - //sum = sum1 | sum2<<8; - //高位再前 - sum = sum1<<8 | sum2; - // if (sum !=0) - Set_sys_now_defect_code(sum); - - dtc_flag = *(buf++)&0xFF; - - sum = 0; - sum1 = *(buf++)&0xFF; - *(buf++)&0xFF; - sum2 = *(buf++)&0xFF; - sum = sum1<<8 | sum2; - // if (sum !=0) - Set_sys_his_defect_code(sum); - -} - -//101 -void A59_speed_event_handing(int *buf){ - uint16_t eng_temp = 0; - uint16_t data = 0; - uint8_t state_data = 0; - double buf_value = 0; - *(buf++); - *(buf++); - *(buf++); - *(buf++); - - data = *(buf++) &0xFF; - data = (*(buf++)&0xFF) | data<<8; - - buf_value = data; - if(buf_value>5280) - buf_value = 255; - else if(buf_value>2730) - buf_value = ((buf_value*0.1)-273); - else - buf_value = 0; - eng_temp = (int)buf_value; - Set_sys_can_temp(eng_temp); - state_data = *(buf++); - Set_sys_can_state(state_data); - -} diff --git a/MXC_A27-PCB4.5-270T/app/moto/protocol/gear_protocol.c b/MXC_A27-PCB4.5-270T/app/moto/protocol/gear_protocol.c index fb9ae37d..acd76956 100644 --- a/MXC_A27-PCB4.5-270T/app/moto/protocol/gear_protocol.c +++ b/MXC_A27-PCB4.5-270T/app/moto/protocol/gear_protocol.c @@ -142,4 +142,23 @@ void Moto_gpio_timer(void) { } } +TimerHandle_t xspeedTimer; +void vTimerSpeedback(TimerHandle_t xTimer) { + speed_convert_mile_calculation(); +} + +void Moto_speed_timer(void){ + xspeedTimer = xTimerCreate("MyspeeSTimer", // 定时器名称 + pdMS_TO_TICKS(100), // 定时器周期(1000毫秒) + pdTRUE, // 自动重载定时器 + (void *)0, // 定时器 ID + vTimerSpeedback); // 回调函数 + + // 启动定时器 + if (xTimerStart(xspeedTimer, 0) != pdPASS) { + // 启动定时器失败的处理 + printf("xTimer error!!!!!!!!!!!!!!!!!.\r\n"); + } + +} diff --git a/MXC_A27-PCB4.5-270T/app/moto/protocol/ota_protocol.c b/MXC_A27-PCB4.5-270T/app/moto/protocol/ota_protocol.c index 8120f446..195cbfcf 100644 --- a/MXC_A27-PCB4.5-270T/app/moto/protocol/ota_protocol.c +++ b/MXC_A27-PCB4.5-270T/app/moto/protocol/ota_protocol.c @@ -448,11 +448,11 @@ int flash_copy_demo(void) printf("start copy flash ok.\n"); for(i=0;i> bitPosition) & 0xf; } +// 封装的函数,获取5个bit组合成的值 +uint8_t getBit5Value(uint8_t count, int bitPosition) { + return (count >> bitPosition) & 0x1f; +} + double adc_voltage_calculation(void){ double value = 0; @@ -77,7 +84,7 @@ double adc_voltage_calculation(void){ //MOTO通讯 设备信息+时间戳解析协议 void device_data_analysis(uint8_t *buf){ - // printf("device information............................................\r\n"); + printf("device information............................................\r\n"); uint8_t data; uint8_t sum1,sum2,sum3,sum4; uint32_t save_total_mile,save_trip_mile; @@ -87,12 +94,12 @@ void device_data_analysis(uint8_t *buf){ char produce[5] = {0}; char mac[6] = {0}; data = *(buf++); - if(data!=0xAA) - return; + // if(data!=0xAA) + // return; data = *(buf++); - if(data!=0x55) - return; + // if(data!=0x55) + // return; //设备相关信息 data = *(buf++);//0x01 diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.clang-format b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.clang-format new file mode 100644 index 00000000..dec56b80 --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.clang-format @@ -0,0 +1,115 @@ +--- +Language: Cpp +# BasedOnStyle: Google +AccessModifierOffset: -1 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Left +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: true +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: true +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 100 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeCategories: + - Regex: '^' + Priority: 2 + - Regex: '^<.*\.h>' + Priority: 1 + - Regex: '^<.*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IncludeIsMainRegex: '([-_](test|unittest))?$' +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 2 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: false +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 600 +PenaltyBreakFirstLessLess: 100 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +RawStringFormats: + - Language: TextProto + BasedOnStyle: google +ReflowComments: false +SortIncludes: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Auto +TabWidth: 2 +UseTab: Never +... + diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.gitignore b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.gitignore new file mode 100644 index 00000000..beb29a09 --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.gitignore @@ -0,0 +1,33 @@ +*.o +*.a +*.so +*.swp +*.pdb +*.ilk +*.idb +*.obj +*.exe +*.pyc +/bin +/lib +.sconsign.dblite +lua/demo1 +lua/lftk_run +tags +bin/demo1* +bin/demo_animator* +bin/demo_thread* +bin/demotr* +bin/demovg* +bin/fontgen* +bin/preview_ui* +bin/resgen* +bin/runLua* +bin/runTest* +bin/strgen* +bin/image* +bin/hello* +.vscode +.vs +*.os +res diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.remote_aw_plugin b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/.remote_aw_plugin new file mode 100644 index 00000000..e69de29b diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/LICENSE b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/LICENSE new file mode 100644 index 00000000..8000a6fa --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/LICENSE @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random + Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/README.md b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/README.md new file mode 100644 index 00000000..49fff63a --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/README.md @@ -0,0 +1,99 @@ +# awtk-widget-number-label + +number_label 控件。用于显示数值的文本控件。 + +![](docs/images/ui.jpg) + +## 准备 + +1. 获取 awtk 并编译 + +``` +git clone https://github.com/zlgopen/awtk.git +cd awtk; scons; cd - +``` + +2. 获取 awtk-widget-number-label + +``` +git clone https://github.com/zlgopen/awtk-widget-number-label.git +cd awtk-widget-number-label +``` + +## 运行 + +1. 生成示例代码的资源 + +``` +python scripts/update_res.py all +``` +> 也可以使用 Designer 打开项目,之后点击 “打包” 按钮进行生成; +> 如果资源发生修改,则需要重新生成资源。 + +如果 PIL 没有安装,执行上述脚本可能会出现如下错误: +```cmd +Traceback (most recent call last): +... +ModuleNotFoundError: No module named 'PIL' +``` +请用 pip 安装: +```cmd +pip install Pillow +``` + +2. 编译 + +* 编译 PC 版本 + +``` +scons +``` + +* 编译 LINUX FB 版本 + +``` +scons LINUX_FB=true +``` + +> 完整编译选项请参考 [编译选项](https://github.com/zlgopen/awtk-widget-generator/blob/master/docs/build_options.md) + +3. 运行 + +``` +./bin/demo +``` + +## 如何使用 number-label 控件 + +在 xml 文件中创建 number-label 控件 + +```xml + +``` + +number_label 各属性的功能如下表所示: + +| 属性名 | 作用 | +| ----------------------- | -------------------------------------------- | +| value | 数值 | +| format | 格式化显示的值 | +| decimal_font_size_scale | 小数部分字体大小与整数部分字体大小之比 | +| min | 最小值 | +| max | 最大值 | +| step | 步长,用于上下键修改时,一次增加或减少的数值 | +| loop | 用上下键修改时,值是否循环 | +| readonly | 编辑器是否只读 | + +如果需要修改字体大小或颜色,可以通过修改 `font_size` 和 `text_color` 样式来修改。 + +**注意事项** + +当 readonly 属性不为 true 时,可以用方向键修改控件的值。如果同时使用方向键切换焦点,会存在焦点进入本控件后无法出来的问题。为了避免这个问题,可以采用以下几种措施之一: + +* readonly 设置为 true +* 把按键事件重新映射。请参考 [键值映射](https://github.com/zlgopen/awtk/blob/master/docs/map_key.md)。 +* 使用极简键盘。请参考 [支持极简键盘](https://github.com/zlgopen/awtk/blob/master/docs/how_to_support_5keys_3keys.md)。 + +## 文档 + +[完善自定义控件](https://github.com/zlgopen/awtk-widget-generator/blob/master/docs/improve_generated_widget.md) \ No newline at end of file diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/SConstruct b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/SConstruct new file mode 100644 index 00000000..be809b21 --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/SConstruct @@ -0,0 +1,8 @@ +import os +import scripts.app_helper as app + +helper = app.Helper(ARGUMENTS) +helper.set_dll_def('src/number_label.def').set_libs(['number_label']).call(DefaultEnvironment) + +SConscriptFiles = ['src/SConscript'] +helper.SConscript(SConscriptFiles) diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/fonts/default.ttf b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/fonts/default.ttf new file mode 100644 index 00000000..866d3baa Binary files /dev/null and b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/fonts/default.ttf differ diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/fonts/led.ttf b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/fonts/led.ttf new file mode 100644 index 00000000..c653d9cb Binary files /dev/null and b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/fonts/led.ttf differ diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/styles/default.xml b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/styles/default.xml new file mode 100644 index 00000000..1b700afb --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/styles/default.xml @@ -0,0 +1,460 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/styles/main.xml b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/styles/main.xml new file mode 100644 index 00000000..8181fa11 --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/styles/main.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/ui/main.xml b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/ui/main.xml new file mode 100644 index 00000000..06b066f7 --- /dev/null +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270S/3rd/awtk-widget-number-label/design/default/ui/main.xml @@ -0,0 +1,20 @@ + + + + + + + + + +