Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
DisplayAppEsp32.cpp
00001 #include "DisplayAppEsp32.h" 00002 00003 void DisplayAppEsp32::display_app_process() { 00004 while(1){ 00005 osEvent evt = esp32Q.get(); 00006 if (evt.status == osEventMessage) { 00007 esp32Msg_t *m = (esp32Msg_t*)evt.value.p; 00008 SendHeader(m->size); 00009 SendData(sendbuf[m->side], m->size); 00010 esp32Pool.free(m); 00011 bufmgr[m->side] = false; 00012 } 00013 } 00014 } 00015 00016 DisplayAppEsp32::DisplayAppEsp32(osPriority tsk_pri, uint32_t stack_size) : 00017 esp32(P3_15, P0_2), esp32Thread(tsk_pri, stack_size) { 00018 esp32_en = new DigitalOut(P5_3); 00019 esp32_io0 = new DigitalOut(P3_14); 00020 00021 bufside = 0; 00022 bufmgr[0]= false; 00023 bufmgr[1]= false; 00024 00025 esp32.set_flow_control(SerialBase::Disabled); 00026 *esp32_io0 = 1; 00027 *esp32_en = 0; 00028 Thread::wait(100); 00029 *esp32_en = 1; 00030 Thread::wait(2000); 00031 esp32.baud(1000000); 00032 esp32Thread.start(callback(this, &DisplayAppEsp32::display_app_process)); 00033 } 00034 00035 void DisplayAppEsp32::SendHeader(uint32_t size) { 00036 uint8_t headder_data[12] = {0xFF,0xFF,0xAA,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 00037 00038 headder_data[8] = (uint8_t)((uint32_t)size >> 0); 00039 headder_data[9] = (uint8_t)((uint32_t)size >> 8); 00040 headder_data[10] = (uint8_t)((uint32_t)size >> 16); 00041 headder_data[11] = (uint8_t)((uint32_t)size >> 24); 00042 for (size_t i = 0; i < sizeof(headder_data); i++) 00043 { 00044 esp32.putc(headder_data[i]); 00045 } 00046 } 00047 00048 void DisplayAppEsp32::SendData(uint8_t * buf, uint32_t size) { 00049 while (size > 0) 00050 { 00051 esp32.putc(*buf++); 00052 size--; 00053 } 00054 } 00055 int DisplayAppEsp32::SendJpeg(uint8_t *buf, uint32_t size) { 00056 if( bufmgr[bufside] == true || size > BufferSize) 00057 { 00058 //size over or buffer full. 00059 return 0; 00060 } 00061 memcpy(sendbuf[bufside], buf, size); 00062 bufmgr[bufside] = true; 00063 00064 esp32Msg_t *m = esp32Pool.alloc(); 00065 if( m == NULL ){ 00066 //mpool alloc failed. 00067 return 0; 00068 } 00069 m->size = size; 00070 m->side = bufside; 00071 esp32Q.put(m); 00072 00073 bufside ^= 1;//flip 00074 return size; 00075 }
Generated on Wed Jul 13 2022 11:17:03 by
1.7.2