mirror of
https://gitee.com/seekfree/TC264_Library.git
synced 2026-06-04 03:32:56 +00:00
V3.2.4
优化延时函数为中断延时,关闭总中断则为普通延时
优化ips114屏幕的初始化时间,移除不必要的延时
修复串口错误中断的串口号异常的问题
追加更新:
新增逐飞助手组件支持
修复fifo高频读写的冲突问题
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
<targetPlatform archList="all" binaryParser="com.tasking.managedbuilder.TASKING_ELF" id="com.infineon.aurix.buildsystem.managed.tasking.targetPlatform.983834169" isAbstract="false" osList="all" superClass="com.infineon.aurix.buildsystem.managed.tasking.targetPlatform"/>
|
||||
<builder buildPath="${workspace_loc:/E01_gpio_demo}/Debug" id="com.infineon.aurix.buildsystem.managed.tasking.builder.2145844482" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.infineon.aurix.buildsystem.managed.tasking.builder"/>
|
||||
<tool id="com.infineon.aurix.buildsystem.managed.tool.c.compiler.tasking.debug.705721940" name="TASKING C/C++ Compiler" superClass="com.infineon.aurix.buildsystem.managed.tool.c.compiler.tasking.debug">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.include.1255529901" name="Include paths" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.include" valueType="includePath">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.include.1255529901" name="Include paths (-I)" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.include" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/infineon_libraries}""/>
|
||||
@@ -87,16 +87,17 @@
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/infineon_libraries/iLLD/TC26B/Tricore/_Lib/DataHandling}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/infineon_libraries/iLLD/TC26B/Tricore/_PinMap}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/zf_common}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/zf_components}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/zf_device}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/zf_driver}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/user}""/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.preprocessor.definedSymbols.968491594" name="Defined symbols" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.preprocessor.definedSymbols" valueType="definedSymbols">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.preprocessor.definedSymbols.968491594" name="Defined symbols (-D)" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.preprocessor.definedSymbols" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="__CPU__=tc26xb"/>
|
||||
</option>
|
||||
<option id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.tradeoff.1099986582" name="Trade-off between speed and size:" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.tradeoff" useByScannerDiscovery="false" value="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.tradeoff.4" valueType="enumerated"/>
|
||||
<option id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.level.debug.925611446" name="Optimization level:" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.level.debug" useByScannerDiscovery="false" value="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.level.0" valueType="enumerated"/>
|
||||
<option id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.fpmodel.316131961" name="Floating-point model:" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.fpmodel" useByScannerDiscovery="false" value="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.fpmodel.fastSingle" valueType="enumerated"/>
|
||||
<option id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.tradeoff.1099986582" name="Trade-off between speed and size: (--tradeoff=)" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.tradeoff" useByScannerDiscovery="false" value="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.tradeoff.4" valueType="enumerated"/>
|
||||
<option id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.level.debug.925611446" name="Optimization level: (-Ox)" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.level.debug" useByScannerDiscovery="false" value="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.optimization.level.0" valueType="enumerated"/>
|
||||
<option id="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.fpmodel.316131961" name="Floating-point model: (--fp-model=)" superClass="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.fpmodel" useByScannerDiscovery="false" value="com.infineon.aurix.buildsystem.managed.c.compiler.tasking.fpmodel.fastSingle" valueType="enumerated"/>
|
||||
<inputType id="com.infineon.aurix.buildsystem.managed.tool.c.compiler.tasking.input.cpp.1003247724" name="C++" superClass="com.infineon.aurix.buildsystem.managed.tool.c.compiler.tasking.input.cpp"/>
|
||||
<inputType id="com.infineon.aurix.buildsystem.managed.tool.c.compiler.tasking.input.90086057" name="C" superClass="com.infineon.aurix.buildsystem.managed.tool.c.compiler.tasking.input"/>
|
||||
</tool>
|
||||
@@ -104,7 +105,7 @@
|
||||
<inputType id="com.infineon.aurix.buildsystem.managed.tool.c.assembler.tasking.input.1059808323" superClass="com.infineon.aurix.buildsystem.managed.tool.c.assembler.tasking.input"/>
|
||||
</tool>
|
||||
<tool id="com.infineon.aurix.buildsystem.managed.tool.c.linker.tasking.1265474075" name="TASKING Linker" superClass="com.infineon.aurix.buildsystem.managed.tool.c.linker.tasking">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.infineon.aurix.buildsystem.managed.tool.c.linker.tasking.libraries.libraries.1395469003" name="Libraries" superClass="com.infineon.aurix.buildsystem.managed.tool.c.linker.tasking.libraries.libraries" useByScannerDiscovery="false" valueType="stringList">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.infineon.aurix.buildsystem.managed.tool.c.linker.tasking.libraries.libraries.1395469003" name="Libraries (${value})" superClass="com.infineon.aurix.buildsystem.managed.tool.c.linker.tasking.libraries.libraries" useByScannerDiscovery="false" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/libraries/zf_device/zf_device_config.a}""/>
|
||||
</option>
|
||||
</tool>
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
V3.2.4
|
||||
<20>Ż<EFBFBD><C5BB><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>Ϊ<EFBFBD><CEAA>ͨ<EFBFBD><CDA8>ʱ
|
||||
<20>Ż<EFBFBD>ips114<31><34>Ļ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD>䣬<EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʱ
|
||||
<20><EFBFBD><DEB8><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>жϵĴ<CFB5><C4B4>ں<EFBFBD><DABA>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><EFBFBD><DEB8><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>жϵĴ<CFB5><C4B4>ں<EFBFBD><DABA>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<>Ӹ<EFBFBD><D3B8>£<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>
|
||||
<20><EFBFBD>fifo<66><6F>Ƶ<EFBFBD><C6B5>д<EFBFBD>ij<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>
|
||||
V3.2.3
|
||||
<20>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>SPIͨ<49><CDA8><EFBFBD><EFBFBD>Ļ(OLED<45><44><EFBFBD><EFBFBD>)<29><>ͨ<EFBFBD>ŷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20>Ĵ<DEB8><C4B4>ڵ<EFBFBD>Ĭ<EFBFBD><C4AC>ͨ<EFBFBD>ŷ<EFBFBD>ʽ
|
||||
@@ -11,7 +14,6 @@ V3.2.1
|
||||
flash<73><68><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰҳ<C7B0><D2B3><EFBFBD>ж<EFBFBD> <20><>ֹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2>淶<EFBFBD><E6B7B6><EFBFBD><EFBFBD>flashʹ<68>ñ<EFBFBD><C3B1><EFBFBD>
|
||||
V3.2.0
|
||||
<20><><EFBFBD><EFBFBD>wifi spiģ<69><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD>detector<6F><72>λ<EFBFBD><CEBB>API<50>ӿ<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD><D1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6>Ա<EFBFBD><D4B1><EFBFBD>
|
||||
zf_device_type <20><><EFBFBD><EFBFBD> ToF <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD> ToF ģ<><C4A3> DL1B
|
||||
|
||||
@@ -46,7 +46,7 @@ static volatile uint8 zf_debug_assert_enable = 1;
|
||||
#if DEBUG_UART_USE_INTERRUPT // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> debug uart <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
uint8 debug_uart_buffer[DEBUG_RING_BUFFER_LEN]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 debug_uart_data;
|
||||
fifo_struct debug_uart_fifo;
|
||||
fifo_obj_struct debug_uart_fifo;
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -30,9 +30,11 @@
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2022-09-15 pudding first version
|
||||
* 2022-08-10 Teternal first version
|
||||
* 2023-12-06 Teternal <20><><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡʱ<C8A1>쳣<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_common_fifo.h"
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -43,7 +45,7 @@
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> fifo_head_offset(fifo, 1);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ù<EFBFBD>ע Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void fifo_head_offset (fifo_struct *fifo, uint32 offset)
|
||||
static void fifo_head_offset (fifo_obj_struct *fifo, uint32 offset)
|
||||
{
|
||||
fifo->head += offset;
|
||||
|
||||
@@ -61,7 +63,7 @@ static void fifo_head_offset (fifo_struct *fifo, uint32 offset)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> fifo_end_offset(fifo, 1);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ù<EFBFBD>ע Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void fifo_end_offset (fifo_struct *fifo, uint32 offset)
|
||||
static void fifo_end_offset (fifo_obj_struct *fifo, uint32 offset)
|
||||
{
|
||||
fifo->end += offset;
|
||||
|
||||
@@ -78,34 +80,28 @@ static void fifo_end_offset (fifo_struct *fifo, uint32 offset)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> fifo_clear(fifo);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>յ<EFBFBD>ǰ FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
fifo_state_enum fifo_clear (fifo_struct *fifo)
|
||||
fifo_state_enum fifo_clear (fifo_obj_struct *fifo)
|
||||
{
|
||||
fifo_state_enum return_state = FIFO_SUCCESS;
|
||||
zf_assert(NULL != fifo);
|
||||
fifo_state_enum return_state = FIFO_SUCCESS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
do
|
||||
{
|
||||
if(FIFO_CLEAR & fifo->execution)
|
||||
{
|
||||
return_state = FIFO_CLEAR_UNDO;
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_CLEAR;
|
||||
fifo->head = 0;
|
||||
fifo->end = 0;
|
||||
fifo->size = fifo->max;
|
||||
|
||||
// if(FIFO_IDLE != fifo->execution) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>ǰ FIFO <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
// {
|
||||
// return_state = FIFO_RESET_UNDO; // <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
// break;
|
||||
// }
|
||||
fifo->execution |= FIFO_RESET; // <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
fifo->head = 0; // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>λ
|
||||
fifo->end = 0; // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>λ
|
||||
fifo->size = fifo->max; // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>λ
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
memset(fifo->buffer, 0, fifo->max);
|
||||
break;
|
||||
case FIFO_DATA_16BIT:
|
||||
memset(fifo->buffer, 0, fifo->max * 2);
|
||||
break;
|
||||
case FIFO_DATA_32BIT:
|
||||
memset(fifo->buffer, 0, fifo->max * 4);
|
||||
break;
|
||||
case FIFO_DATA_8BIT: memset(fifo->buffer, 0, fifo->max); break;
|
||||
case FIFO_DATA_16BIT: memset(fifo->buffer, 0, fifo->max * 2); break;
|
||||
case FIFO_DATA_32BIT: memset(fifo->buffer, 0, fifo->max * 4); break;
|
||||
}
|
||||
fifo->execution &= ~FIFO_CLEAR;
|
||||
fifo->execution = FIFO_IDLE; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>λ
|
||||
}while(0);
|
||||
return return_state;
|
||||
}
|
||||
@@ -117,9 +113,10 @@ fifo_state_enum fifo_clear (fifo_struct *fifo)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 len = fifo_used(fifo);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 fifo_used (fifo_struct *fifo)
|
||||
uint32 fifo_used (fifo_obj_struct *fifo)
|
||||
{
|
||||
return (fifo->max - fifo->size);
|
||||
zf_assert(fifo != NULL);
|
||||
return (fifo->max - fifo->size); // <20><><EFBFBD>ص<EFBFBD>ǰ FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -130,41 +127,36 @@ uint32 fifo_used (fifo_struct *fifo)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> zf_log(fifo_write_element(&fifo, data) == FIFO_SUCCESS, "fifo_write_byte error");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
fifo_state_enum fifo_write_element (fifo_struct *fifo, uint32 dat)
|
||||
fifo_state_enum fifo_write_element (fifo_obj_struct *fifo, uint32 dat)
|
||||
{
|
||||
fifo_state_enum return_state = FIFO_SUCCESS;
|
||||
zf_assert(NULL != fifo);
|
||||
fifo_state_enum return_state = FIFO_SUCCESS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
do
|
||||
{
|
||||
if(FIFO_WRITE & fifo->execution)
|
||||
if((FIFO_RESET | FIFO_WRITE) & fifo->execution) // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ <20><><EFBFBD><EFBFBD>д<EFBFBD>뾺<EFBFBD><EBBEBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
return_state = FIFO_WRITE_UNDO;
|
||||
return_state = FIFO_WRITE_UNDO; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_WRITE;
|
||||
fifo->execution |= FIFO_WRITE; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
|
||||
if(1 <= fifo->size) // ʣ<><CAA3><EFBFBD>ռ<EFBFBD><D5BC>㹻װ<E3B9BB>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
((uint8 *)fifo->buffer)[fifo->head] = dat & 0xFF;
|
||||
break;
|
||||
case FIFO_DATA_16BIT:
|
||||
((uint16 *)fifo->buffer)[fifo->head] = dat & 0xFFFF;
|
||||
break;
|
||||
case FIFO_DATA_32BIT:
|
||||
((uint32 *)fifo->buffer)[fifo->head] = dat;
|
||||
break;
|
||||
case FIFO_DATA_8BIT: ((uint8 *)fifo->buffer)[fifo->head] = (uint8)dat; break;
|
||||
case FIFO_DATA_16BIT: ((uint16 *)fifo->buffer)[fifo->head] = (uint16)dat; break;
|
||||
case FIFO_DATA_32BIT: ((uint32 *)fifo->buffer)[fifo->head] = dat; break;
|
||||
}
|
||||
fifo_head_offset(fifo, 1); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
fifo->size -= 1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD>ȼ<EFBFBD>С
|
||||
}
|
||||
else
|
||||
{
|
||||
return_state = FIFO_SPACE_NO_ENOUGH;
|
||||
return_state = FIFO_SPACE_NO_ENOUGH; // <20><>ǰ FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؿռ䲻<D5BC><E4B2BB>
|
||||
}
|
||||
fifo->execution &= ~FIFO_WRITE;
|
||||
fifo->execution &= ~FIFO_WRITE; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}while(0);
|
||||
|
||||
return return_state;
|
||||
@@ -179,26 +171,27 @@ fifo_state_enum fifo_write_element (fifo_struct *fifo, uint32 dat)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> zf_log(fifo_write_buffer(&fifo, data, 32) == FIFO_SUCCESS, "fifo_write_buffer error");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length)
|
||||
fifo_state_enum fifo_write_buffer (fifo_obj_struct *fifo, void *dat, uint32 length)
|
||||
{
|
||||
fifo_state_enum return_state = FIFO_SUCCESS;
|
||||
zf_assert(NULL != fifo);
|
||||
fifo_state_enum return_state = FIFO_SUCCESS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
uint32 temp_length = 0;
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == dat)
|
||||
{
|
||||
return_state = FIFO_BUFFER_NULL;
|
||||
return_state = FIFO_BUFFER_NULL; // <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
break;
|
||||
}
|
||||
if(FIFO_WRITE & fifo->execution)
|
||||
if((FIFO_RESET | FIFO_WRITE) & fifo->execution) // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ <20><><EFBFBD><EFBFBD>д<EFBFBD>뾺<EFBFBD><EBBEBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
return_state = FIFO_WRITE_UNDO;
|
||||
return_state = FIFO_WRITE_UNDO; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_WRITE;
|
||||
fifo->execution |= FIFO_WRITE; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
|
||||
if(length <= fifo->size) // ʣ<><CAA3><EFBFBD>ռ<EFBFBD><D5BC>㹻װ<E3B9BB>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(length <= fifo->size) // ʣ<><CAA3><EFBFBD>ռ<EFBFBD><D5BC>㹻װ<E3B9BB>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
temp_length = fifo->max - fifo->head; // <20><><EFBFBD><EFBFBD>ͷָ<CDB7><D6B8><EFBFBD><EFBFBD><EFBFBD>뻺<EFBFBD><EBBBBA><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>ж<EFBFBD><D0B6>ٿռ<D9BF>
|
||||
|
||||
@@ -207,6 +200,7 @@ fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length)
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
{
|
||||
memcpy(
|
||||
&(((uint8 *)fifo->buffer)[fifo->head]),
|
||||
dat, temp_length); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -216,8 +210,9 @@ fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length)
|
||||
&(((uint8 *)dat)[temp_length]),
|
||||
length - temp_length); // <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_head_offset(fifo, length - temp_length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
break;
|
||||
}break;
|
||||
case FIFO_DATA_16BIT:
|
||||
{
|
||||
memcpy(
|
||||
&(((uint16 *)fifo->buffer)[fifo->head]),
|
||||
dat, temp_length * 2); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -227,8 +222,9 @@ fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length)
|
||||
&(((uint16 *)dat)[temp_length]),
|
||||
(length - temp_length) * 2); // <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_head_offset(fifo, length - temp_length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
break;
|
||||
}break;
|
||||
case FIFO_DATA_32BIT:
|
||||
{
|
||||
memcpy(
|
||||
&(((uint32 *)fifo->buffer)[fifo->head]),
|
||||
dat, temp_length * 4); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -238,7 +234,7 @@ fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length)
|
||||
&(((uint32 *)dat)[temp_length]),
|
||||
(length - temp_length) * 4); // <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_head_offset(fifo, length - temp_length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
break;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -246,35 +242,36 @@ fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length)
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
{
|
||||
memcpy(
|
||||
&(((uint8 *)fifo->buffer)[fifo->head]),
|
||||
dat, length); // һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
||||
fifo_head_offset(fifo, length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
break;
|
||||
}break;
|
||||
case FIFO_DATA_16BIT:
|
||||
{
|
||||
memcpy(
|
||||
&(((uint16 *)fifo->buffer)[fifo->head]),
|
||||
dat, length * 2); // һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
||||
fifo_head_offset(fifo, length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
break;
|
||||
}break;
|
||||
case FIFO_DATA_32BIT:
|
||||
{
|
||||
memcpy(
|
||||
&(((uint32 *)fifo->buffer)[fifo->head]),
|
||||
dat, length * 4); // һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
||||
fifo_head_offset(fifo, length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
break;
|
||||
}break;
|
||||
}
|
||||
// memcpy(&fifo->buffer[fifo->head], dat, length); // һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
||||
// fifo_head_offset(fifo, length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
|
||||
}
|
||||
|
||||
fifo->size -= length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD>ȼ<EFBFBD>С
|
||||
}
|
||||
else
|
||||
{
|
||||
return_state = FIFO_SPACE_NO_ENOUGH;
|
||||
return_state = FIFO_SPACE_NO_ENOUGH; // <20><>ǰ FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؿռ䲻<D5BC><E4B2BB>
|
||||
}
|
||||
fifo->execution &= ~FIFO_WRITE;
|
||||
fifo->execution &= ~FIFO_WRITE; // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}while(0);
|
||||
|
||||
return return_state;
|
||||
@@ -289,51 +286,54 @@ fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> zf_log(fifo_read_element(&fifo, data, FIFO_READ_ONLY) == FIFO_SUCCESS, "fifo_read_byte error");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
fifo_state_enum fifo_read_element (fifo_struct *fifo, void *dat, fifo_operation_enum flag)
|
||||
fifo_state_enum fifo_read_element (fifo_obj_struct *fifo, void *dat, fifo_operation_enum flag)
|
||||
{
|
||||
fifo_state_enum return_state = FIFO_SUCCESS;
|
||||
zf_assert(NULL != fifo);
|
||||
fifo_state_enum return_state = FIFO_SUCCESS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == dat)
|
||||
{
|
||||
return_state = FIFO_BUFFER_NULL;
|
||||
break;
|
||||
return_state = FIFO_BUFFER_NULL; // <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
}
|
||||
fifo->execution |= FIFO_READ;
|
||||
|
||||
if(1 > fifo_used(fifo))
|
||||
else
|
||||
{
|
||||
return_state = FIFO_DATA_NO_ENOUGH; // <20><>־<EFBFBD><D6BE><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
*((uint8 *)dat) = ((uint8 *)fifo->buffer)[fifo->end];
|
||||
break;
|
||||
case FIFO_DATA_16BIT:
|
||||
*((uint16 *)dat) = ((uint16 *)fifo->buffer)[fifo->end];
|
||||
break;
|
||||
case FIFO_DATA_32BIT:
|
||||
*((uint32 *)dat) = ((uint32 *)fifo->buffer)[fifo->end];
|
||||
break;
|
||||
}
|
||||
|
||||
if(flag == FIFO_READ_AND_CLEAN) // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬
|
||||
{
|
||||
if(FIFO_CLEAR & fifo->execution)
|
||||
if((FIFO_RESET | FIFO_CLEAR) & fifo->execution) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>ǰ FIFO <20>Ƿ<EFBFBD><C7B7><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
return_state = FIFO_CLEAR_UNDO;
|
||||
return_state = FIFO_READ_UNDO; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_CLEAR;
|
||||
|
||||
if(1 > fifo_used(fifo))
|
||||
{
|
||||
return_state = FIFO_DATA_NO_ENOUGH; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>Ȳ<EFBFBD><C8B2><EFBFBD>
|
||||
break; // ֱ<><D6B1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
fifo->execution |= FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT: *((uint8 *)dat) = ((uint8 *)fifo->buffer)[fifo->end]; break;
|
||||
case FIFO_DATA_16BIT: *((uint16 *)dat) = ((uint16 *)fifo->buffer)[fifo->end]; break;
|
||||
case FIFO_DATA_32BIT: *((uint32 *)dat) = ((uint32 *)fifo->buffer)[fifo->end]; break;
|
||||
}
|
||||
fifo->execution &= ~FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}
|
||||
|
||||
if(FIFO_READ_AND_CLEAN == flag) // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬
|
||||
{
|
||||
if((FIFO_RESET | FIFO_CLEAR | FIFO_READ) == fifo->execution) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȡ ״̬ <20><><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
{
|
||||
return_state = FIFO_CLEAR_UNDO; // <20><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_CLEAR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
fifo_end_offset(fifo, 1); // <20>ƶ<EFBFBD> FIFO ͷָ<CDB7><D6B8>
|
||||
fifo->size += 1;
|
||||
fifo->execution &= ~FIFO_CLEAR;
|
||||
fifo->size += 1; // <20>ͷŶ<CDB7>Ӧ<EFBFBD><D3A6><EFBFBD>ȿռ<C8BF>
|
||||
fifo->execution &= ~FIFO_CLEAR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}
|
||||
}while(0);
|
||||
fifo->execution &= FIFO_READ;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -348,75 +348,89 @@ fifo_state_enum fifo_read_element (fifo_struct *fifo, void *dat, fifo_operation_
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> zf_log(fifo_read_buffer(&fifo, data, &length, FIFO_READ_ONLY) == FIFO_SUCCESS, "fifo_read_buffer error");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
fifo_state_enum fifo_read_buffer (fifo_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag)
|
||||
fifo_state_enum fifo_read_buffer (fifo_obj_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag)
|
||||
{
|
||||
fifo_state_enum return_state = FIFO_SUCCESS;
|
||||
uint32 temp_length;
|
||||
zf_assert(NULL != fifo);
|
||||
zf_assert(NULL != length);
|
||||
fifo_state_enum return_state = FIFO_SUCCESS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
uint32 temp_length = 0;
|
||||
uint32 fifo_data_length = 0;
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == dat)
|
||||
{
|
||||
return_state = FIFO_BUFFER_NULL;
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_READ;
|
||||
|
||||
if(*length > fifo_used(fifo))
|
||||
{
|
||||
*length = (fifo->max - fifo->size); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
return_state = FIFO_DATA_NO_ENOUGH; // <20><>־<EFBFBD><D6BE><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
||||
}
|
||||
|
||||
temp_length = fifo->max - fifo->end; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8><EFBFBD><EFBFBD><EFBFBD>뻺<EFBFBD><EBBBBA><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>ж<EFBFBD><D0B6>ٿռ<D9BF>
|
||||
if(*length <= temp_length) // <20>㹻һ<E3B9BB><D2BB><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
{
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->end]), *length);
|
||||
break;
|
||||
case FIFO_DATA_16BIT:
|
||||
memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->end]), *length * 2);
|
||||
break;
|
||||
case FIFO_DATA_32BIT:
|
||||
memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->end]), *length * 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(fifo->type)
|
||||
if((FIFO_RESET | FIFO_CLEAR) & fifo->execution) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>ǰ FIFO <20>Ƿ<EFBFBD><C7B7><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->end]), temp_length);
|
||||
memcpy(&(((uint8 *)dat)[temp_length]), fifo->buffer, *length - temp_length);
|
||||
break;
|
||||
case FIFO_DATA_16BIT:
|
||||
memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->end]), temp_length * 2);
|
||||
memcpy(&(((uint16 *)dat)[temp_length]), fifo->buffer, (*length - temp_length) * 2);
|
||||
break;
|
||||
case FIFO_DATA_32BIT:
|
||||
memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->end]), temp_length * 4);
|
||||
memcpy(&(((uint32 *)dat)[temp_length]), fifo->buffer, (*length - temp_length) * 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(flag == FIFO_READ_AND_CLEAN) // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬
|
||||
{
|
||||
if(FIFO_CLEAR & fifo->execution)
|
||||
{
|
||||
return_state = FIFO_CLEAR_UNDO;
|
||||
*length = fifo_data_length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
return_state = FIFO_READ_UNDO; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_CLEAR;
|
||||
|
||||
fifo_data_length = fifo_used(fifo); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
if(*length > fifo_data_length) // <20>жϳ<D0B6><CFB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>㹻
|
||||
{
|
||||
*length = fifo_data_length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
return_state = FIFO_DATA_NO_ENOUGH; // <20><>־<EFBFBD><D6BE><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
||||
if(0 == fifo_data_length) // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
|
||||
{
|
||||
fifo->execution &= ~FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fifo->execution |= FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
temp_length = fifo->max - fifo->end; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8><EFBFBD><EFBFBD><EFBFBD>뻺<EFBFBD><EBBBBA><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>ж<EFBFBD><D0B6>ٿռ<D9BF>
|
||||
if(*length <= temp_length) // <20>㹻һ<E3B9BB><D2BB><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
{
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT: memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->end]), *length); break;
|
||||
case FIFO_DATA_16BIT: memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->end]), *length * 2); break;
|
||||
case FIFO_DATA_32BIT: memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->end]), *length * 4); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
{
|
||||
memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->end]), temp_length);
|
||||
memcpy(&(((uint8 *)dat)[temp_length]), fifo->buffer, *length - temp_length);
|
||||
}break;
|
||||
case FIFO_DATA_16BIT:
|
||||
{
|
||||
memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->end]), temp_length * 2);
|
||||
memcpy(&(((uint16 *)dat)[temp_length]), fifo->buffer, (*length - temp_length) * 2);
|
||||
}break;
|
||||
case FIFO_DATA_32BIT:
|
||||
{
|
||||
memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->end]), temp_length * 4);
|
||||
memcpy(&(((uint32 *)dat)[temp_length]), fifo->buffer, (*length - temp_length) * 4);
|
||||
}break;
|
||||
}
|
||||
}
|
||||
fifo->execution &= ~FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}
|
||||
|
||||
if(FIFO_READ_AND_CLEAN == flag) // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬
|
||||
{
|
||||
if((FIFO_RESET | FIFO_CLEAR | FIFO_READ) == fifo->execution) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȡ ״̬ <20><><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
{
|
||||
return_state = FIFO_CLEAR_UNDO; // <20><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_CLEAR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
fifo_end_offset(fifo, *length); // <20>ƶ<EFBFBD> FIFO ͷָ<CDB7><D6B8>
|
||||
fifo->size += *length;
|
||||
fifo->execution &= ~FIFO_CLEAR;
|
||||
fifo->size += *length; // <20>ͷŶ<CDB7>Ӧ<EFBFBD><D3A6><EFBFBD>ȿռ<C8BF>
|
||||
fifo->execution &= ~FIFO_CLEAR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}
|
||||
}while(0);
|
||||
fifo->execution &= FIFO_READ;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -433,75 +447,86 @@ fifo_state_enum fifo_read_buffer (fifo_struct *fifo, void *dat, uint32 *length,
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> FIFO_READ_AND_CLEAN <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ᶪ<EFBFBD><E1B6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> FIFO_READ_AND_CLEAN <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ᶪ<EFBFBD><E1B6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
fifo_state_enum fifo_read_tail_buffer (fifo_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag)
|
||||
fifo_state_enum fifo_read_tail_buffer (fifo_obj_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag)
|
||||
{
|
||||
fifo_state_enum return_state = FIFO_SUCCESS;
|
||||
uint32 temp_length;
|
||||
zf_assert(NULL != fifo);
|
||||
zf_assert(NULL != length);
|
||||
fifo_state_enum return_state = FIFO_SUCCESS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
uint32 temp_length = 0;
|
||||
uint32 fifo_data_length = 0;
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == dat)
|
||||
{
|
||||
return_state = FIFO_BUFFER_NULL;
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_READ;
|
||||
|
||||
if(*length > fifo_used(fifo))
|
||||
{
|
||||
*length = (fifo->max - fifo->size); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
return_state = FIFO_DATA_NO_ENOUGH; // <20><>־<EFBFBD><D6BE><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
||||
}
|
||||
|
||||
if((fifo->head > fifo->end) || (fifo->head >= *length))
|
||||
{
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->head - *length]), *length);
|
||||
break;
|
||||
case FIFO_DATA_16BIT:
|
||||
memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->head - *length]), *length * 2);
|
||||
break;
|
||||
case FIFO_DATA_32BIT:
|
||||
memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->head - *length]), *length * 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
temp_length = *length - fifo->head; // <20><><EFBFBD><EFBFBD>βָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뻺<EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>ٿռ<EFBFBD>
|
||||
switch(fifo->type)
|
||||
if((FIFO_RESET | FIFO_CLEAR | FIFO_WRITE) & fifo->execution) // <20>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ǰ FIFO <20>Ƿ<EFBFBD><C7B7><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->max - temp_length]), temp_length);
|
||||
memcpy(&(((uint8 *)dat)[temp_length]), &(((uint8 *)fifo->buffer)[fifo->head - *length]), (*length - temp_length));
|
||||
break;
|
||||
case FIFO_DATA_16BIT:
|
||||
memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->max - temp_length]), temp_length * 2);
|
||||
memcpy(&(((uint16 *)dat)[temp_length]), &(((uint16 *)fifo->buffer)[fifo->head - *length]), (*length - temp_length) * 2);
|
||||
break;
|
||||
case FIFO_DATA_32BIT:
|
||||
memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->max - temp_length]), temp_length * 4);
|
||||
memcpy(&(((uint32 *)dat)[temp_length]), &(((uint32 *)fifo->buffer)[fifo->head - *length]), (*length - temp_length) * 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(flag == FIFO_READ_AND_CLEAN) // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬
|
||||
{
|
||||
if(FIFO_CLEAR & fifo->execution)
|
||||
{
|
||||
return_state = FIFO_CLEAR_UNDO;
|
||||
*length = fifo_data_length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
return_state = FIFO_READ_UNDO; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo->execution |= FIFO_CLEAR;
|
||||
fifo_end_offset(fifo, (fifo->max - fifo->size));
|
||||
fifo->size = fifo->max;
|
||||
fifo->execution &= ~FIFO_CLEAR;
|
||||
|
||||
fifo_data_length = fifo_used(fifo); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
if(*length > fifo_data_length) // <20>жϳ<D0B6><CFB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>㹻
|
||||
{
|
||||
*length = fifo_data_length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
return_state = FIFO_DATA_NO_ENOUGH; // <20><>־<EFBFBD><D6BE><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
||||
if(0 == fifo_data_length) // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
|
||||
{
|
||||
fifo->execution &= ~FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fifo->execution |= FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
if((fifo->head > fifo->end) || (fifo->head >= *length))
|
||||
{
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT: memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->head - *length]), *length); break;
|
||||
case FIFO_DATA_16BIT: memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->head - *length]), *length * 2);break;
|
||||
case FIFO_DATA_32BIT: memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->head - *length]), *length * 4);break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
temp_length = *length - fifo->head; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8><EFBFBD><EFBFBD><EFBFBD>뻺<EFBFBD><EBBBBA><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>ж<EFBFBD><D0B6>ٿռ<D9BF>
|
||||
switch(fifo->type)
|
||||
{
|
||||
case FIFO_DATA_8BIT:
|
||||
{
|
||||
memcpy(dat, &(((uint8 *)fifo->buffer)[fifo->max - temp_length]), temp_length);
|
||||
memcpy(&(((uint8 *)dat)[temp_length]), &(((uint8 *)fifo->buffer)[fifo->head - *length]), (*length - temp_length));
|
||||
}break;
|
||||
case FIFO_DATA_16BIT:
|
||||
{
|
||||
memcpy(dat, &(((uint16 *)fifo->buffer)[fifo->max - temp_length]), temp_length * 2);
|
||||
memcpy(&(((uint16 *)dat)[temp_length]), &(((uint16 *)fifo->buffer)[fifo->head - *length]), (*length - temp_length) * 2);
|
||||
}break;
|
||||
case FIFO_DATA_32BIT:
|
||||
{
|
||||
memcpy(dat, &(((uint32 *)fifo->buffer)[fifo->max - temp_length]), temp_length * 4);
|
||||
memcpy(&(((uint32 *)dat)[temp_length]), &(((uint32 *)fifo->buffer)[fifo->head - *length]), (*length - temp_length) * 4);
|
||||
}break;
|
||||
}
|
||||
}
|
||||
fifo->execution &= ~FIFO_READ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}
|
||||
|
||||
if(FIFO_READ_AND_CLEAN == flag) // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬
|
||||
{
|
||||
if((FIFO_RESET | FIFO_CLEAR | FIFO_READ) == fifo->execution) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȡ ״̬ <20><><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
{
|
||||
return_state = FIFO_CLEAR_UNDO; // <20><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
fifo_clear(fifo);
|
||||
}
|
||||
}while(0);
|
||||
fifo->execution &= FIFO_READ;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -516,23 +541,19 @@ fifo_state_enum fifo_read_tail_buffer (fifo_struct *fifo, void *dat, uint32 *len
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> fifo_init(&user_fifo, user_buffer, 64);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
fifo_state_enum fifo_init (fifo_struct *fifo, fifo_data_type_enum type, void *buffer_addr, uint32 size)
|
||||
fifo_state_enum fifo_init (fifo_obj_struct *fifo, fifo_data_type_enum type, void *buffer_addr, uint32 size)
|
||||
{
|
||||
fifo_state_enum return_value = FIFO_SUCCESS;
|
||||
zf_assert(NULL != fifo);
|
||||
fifo_state_enum return_state = FIFO_SUCCESS;
|
||||
do
|
||||
{
|
||||
if(NULL == buffer_addr)
|
||||
{
|
||||
return_value = FIFO_BUFFER_NULL;
|
||||
break;
|
||||
}
|
||||
fifo->buffer = buffer_addr;
|
||||
fifo->execution = FIFO_IDLE;
|
||||
fifo->type = type;
|
||||
fifo->head = 0;
|
||||
fifo->end = 0;
|
||||
fifo->size = size;
|
||||
fifo->max = size;
|
||||
fifo->buffer = buffer_addr;
|
||||
fifo->execution = FIFO_IDLE;
|
||||
fifo->type = type;
|
||||
fifo->head = 0;
|
||||
fifo->end = 0;
|
||||
fifo->size = size;
|
||||
fifo->max = size;
|
||||
}while(0);
|
||||
return return_value;
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2022-09-15 pudding first version
|
||||
* 2022-08-10 Teternal first version
|
||||
* 2023-12-06 Teternal <20><><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡʱ<C8A1>쳣<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _zf_common_fifo_h_
|
||||
@@ -40,56 +41,67 @@
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FIFO_SUCCESS,
|
||||
FIFO_SUCCESS, // FIFO <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
|
||||
FIFO_WRITE_UNDO,
|
||||
FIFO_CLEAR_UNDO,
|
||||
FIFO_BUFFER_NULL,
|
||||
FIFO_SPACE_NO_ENOUGH,
|
||||
FIFO_DATA_NO_ENOUGH,
|
||||
}fifo_state_enum;
|
||||
FIFO_RESET_UNDO, // FIFO <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>δִ<CEB4><D6B4>
|
||||
FIFO_CLEAR_UNDO, // FIFO <20><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD>δִ<CEB4><D6B4>
|
||||
FIFO_BUFFER_NULL, // FIFO <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
FIFO_WRITE_UNDO, // FIFO д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δִ<CEB4><D6B4>
|
||||
FIFO_SPACE_NO_ENOUGH, // FIFO д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB>
|
||||
FIFO_READ_UNDO, // FIFO <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>δִ<CEB4><D6B4>
|
||||
FIFO_DATA_NO_ENOUGH, // FIFO <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> <20><><EFBFBD>ݳ<EFBFBD><DDB3>Ȳ<EFBFBD><C8B2><EFBFBD>
|
||||
}fifo_state_enum; // FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> <20><><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
// <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
// ˳<><CBB3><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
// β<><CEB2><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD>˷<EFBFBD>ֹ<EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
FIFO_IDLE = 0x00, // <20><><EFBFBD><EFBFBD>״̬
|
||||
|
||||
FIFO_RESET = 0x01, // <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
FIFO_CLEAR = 0x02, // <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
FIFO_WRITE = 0x04, // <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>д<EFBFBD>뻺<EFBFBD><EBBBBA><EFBFBD><EFBFBD>
|
||||
FIFO_READ = 0x08, // <20><><EFBFBD><EFBFBD>ִ<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}fifo_execution_enum; // FIFO <20><><EFBFBD><EFBFBD>״̬ ΪǶ<CEAA><C7B6>ʹ<EFBFBD><CAB9>Ԥ<EFBFBD><D4A4> <20><EFBFBD><DEB7><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FIFO_IDLE = 0x00,
|
||||
FIFO_CLEAR = 0x01,
|
||||
FIFO_WRITE = 0x02,
|
||||
FIFO_READ = 0x04,
|
||||
}fifo_execution_enum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FIFO_READ_AND_CLEAN,
|
||||
FIFO_READ_ONLY,
|
||||
FIFO_READ_AND_CLEAN, // FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷŶ<CDB7>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FIFO_READ_ONLY, // FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD>ȡ
|
||||
}fifo_operation_enum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FIFO_DATA_8BIT,
|
||||
FIFO_DATA_16BIT,
|
||||
FIFO_DATA_32BIT,
|
||||
FIFO_DATA_8BIT, // FIFO <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> 8bit
|
||||
FIFO_DATA_16BIT, // FIFO <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> 16bit
|
||||
FIFO_DATA_32BIT, // FIFO <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> 32bit
|
||||
}fifo_data_type_enum;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 execution; // ִ<>в<EFBFBD><D0B2><EFBFBD>
|
||||
fifo_data_type_enum type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void *buffer; // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
void *buffer; // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
uint32 head; // <20><><EFBFBD><EFBFBD>ͷָ<CDB7><D6B8> <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>յĻ<D5B5><C4BB><EFBFBD>
|
||||
uint32 end; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8> <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ǿջ<C7BF><D5BB>棨<EFBFBD><E6A3A8><EFBFBD><EFBFBD>ȫ<EFBFBD>ճ<EFBFBD><D5B3>⣩
|
||||
uint32 size; // <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD>С
|
||||
uint32 max; // <20><><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD>С
|
||||
}fifo_struct;
|
||||
}fifo_obj_struct;
|
||||
|
||||
fifo_state_enum fifo_clear (fifo_struct *fifo);
|
||||
uint32 fifo_used (fifo_struct *fifo);
|
||||
fifo_state_enum fifo_clear (fifo_obj_struct *fifo);
|
||||
uint32 fifo_used (fifo_obj_struct *fifo);
|
||||
|
||||
fifo_state_enum fifo_write_element (fifo_struct *fifo, uint32 dat);
|
||||
fifo_state_enum fifo_write_buffer (fifo_struct *fifo, void *dat, uint32 length);
|
||||
fifo_state_enum fifo_read_element (fifo_struct *fifo, void *dat, fifo_operation_enum flag);
|
||||
fifo_state_enum fifo_read_buffer (fifo_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag);
|
||||
fifo_state_enum fifo_read_tail_buffer (fifo_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag);
|
||||
fifo_state_enum fifo_write_element (fifo_obj_struct *fifo, uint32 dat);
|
||||
fifo_state_enum fifo_write_buffer (fifo_obj_struct *fifo, void *dat, uint32 length);
|
||||
fifo_state_enum fifo_read_element (fifo_obj_struct *fifo, void *dat, fifo_operation_enum flag);
|
||||
fifo_state_enum fifo_read_buffer (fifo_obj_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag);
|
||||
fifo_state_enum fifo_read_tail_buffer (fifo_obj_struct *fifo, void *dat, uint32 *length, fifo_operation_enum flag);
|
||||
|
||||
fifo_state_enum fifo_init (fifo_struct *fifo, fifo_data_type_enum type, void *buffer_addr, uint32 size);
|
||||
fifo_state_enum fifo_init (fifo_obj_struct *fifo, fifo_data_type_enum type, void *buffer_addr, uint32 size);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -84,7 +84,6 @@
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_gps_tau1201.h"
|
||||
#include "zf_device_camera.h"
|
||||
#include "zf_device_detector.h"
|
||||
#include "zf_device_dl1a.h"
|
||||
#include "zf_device_dl1b.h"
|
||||
#include "zf_device_icm20602.h"
|
||||
@@ -107,6 +106,10 @@
|
||||
#include "zf_device_wireless_uart.h"
|
||||
//===================================================<3D><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
|
||||
|
||||
//====================================================Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||
#include "seekfree_assistant.h"
|
||||
//====================================================Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||
|
||||
//=====================================================<3D>û<EFBFBD><C3BB><EFBFBD>======================================================
|
||||
|
||||
//=====================================================<3D>û<EFBFBD><C3BB><EFBFBD>======================================================
|
||||
|
||||
@@ -72,6 +72,8 @@ typedef volatile int64 vint64;
|
||||
|
||||
#define ZF_TRUE (1)
|
||||
#define ZF_FALSE (0)
|
||||
|
||||
#define ZF_WEAK __attribute__((weak))
|
||||
//=================================================== <20><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD> ===================================================
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,436 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||
*
|
||||
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||
*
|
||||
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2023-11-29 pudding first version
|
||||
********************************************************************************************************************/
|
||||
#include "zf_common_fifo.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_struct seekfree_assistant_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_dot_struct seekfree_assistant_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_buffer_struct seekfree_assistant_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
static fifo_obj_struct seekfree_assistant_fifo;
|
||||
static uint8 seekfree_assistant_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 seekfree_assistant_sum (uint8 *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_data_send (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
|
||||
seekfree_assistant_camera_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_data.function = SEEKFREE_ASSISTANT_CAMERA_FUNCTION;
|
||||
seekfree_assistant_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
seekfree_assistant_camera_data.length = sizeof(seekfree_assistant_camera_struct);
|
||||
seekfree_assistant_camera_data.image_width = width;
|
||||
seekfree_assistant_camera_data.image_height = height;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
seekfree_assistant_transfer((const uint8 *)&seekfree_assistant_camera_data, sizeof(seekfree_assistant_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
{
|
||||
seekfree_assistant_transfer(image_addr, image_size);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƺ<EFBFBD><C6BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_dot_send (seekfree_assistant_camera_buffer_struct *buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
dot_bytes = seekfree_assistant_camera_dot_data.dot_num;
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
}
|
||||
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_transfer((const uint8 *)&seekfree_assistant_camera_dot_data, sizeof(seekfree_assistant_camera_dot_struct));
|
||||
|
||||
for(i=0; i < SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
seekfree_assistant_transfer((const uint8 *)buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
seekfree_assistant_transfer((const uint8 *)buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT >= seekfree_assistant_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
seekfree_assistant_oscilloscope->head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(seekfree_assistant_oscilloscope_struct) - (SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT - seekfree_assistant_oscilloscope->channel_num) * 4;
|
||||
seekfree_assistant_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num |= SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->check_sum = 0;
|
||||
seekfree_assistant_oscilloscope->check_sum = seekfree_assistant_sum((uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>seekfree_assistant_oscilloscope_data.data[]
|
||||
|
||||
seekfree_assistant_transfer((const uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_information_config(SEEKFREE_ASSISTANT_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
{
|
||||
seekfree_assistant_camera_dot_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_dot_data.function = SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
seekfree_assistant_camera_dot_data.length = sizeof(seekfree_assistant_camera_dot_struct);
|
||||
|
||||
seekfree_assistant_camera_buffer.camera_type = camera_type;
|
||||
seekfree_assistant_camera_buffer.image_addr = image_addr;
|
||||
seekfree_assistant_camera_buffer.width = width;
|
||||
seekfree_assistant_camera_buffer.height = height;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>seekfree_assistant_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_num = dot_num;
|
||||
seekfree_assistant_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = NULL;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x3;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < seekfree_assistant_camera_buffer.width) || (255 < seekfree_assistant_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>seekfree_assistant_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_data_send(seekfree_assistant_camera_buffer.camera_type, seekfree_assistant_camera_buffer.image_addr, seekfree_assistant_camera_dot_data.dot_type & 0x0f, seekfree_assistant_camera_buffer.width, seekfree_assistant_camera_buffer.height);
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
seekfree_assistant_camera_dot_send(&seekfree_assistant_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
seekfree_assistant_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
read_length = seekfree_assistant_receive((uint8 *)temp_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, read_length);
|
||||
}
|
||||
|
||||
|
||||
while(sizeof(seekfree_assistant_parameter_struct) <= fifo_used(&seekfree_assistant_fifo))
|
||||
{
|
||||
read_length = sizeof(seekfree_assistant_parameter_struct);
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<><C3BB>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD>FIFO<46><4F>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (seekfree_assistant_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == seekfree_assistant_sum((uint8 *)temp_buffer, sizeof(seekfree_assistant_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
seekfree_assistant_parameter_update_flag[receive_packet->channel - 1] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK void seekfree_assistant_init ()
|
||||
{
|
||||
fifo_init(&seekfree_assistant_fifo, FIFO_DATA_8BIT, seekfree_assistant_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/*********************************************************************************************************************
|
||||
/*/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||||
*
|
||||
@@ -21,7 +21,7 @@
|
||||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||||
*
|
||||
* 文件名称 zf_device_detector
|
||||
* 文件名称 seekfree_assistant
|
||||
* 公司名称 成都逐飞科技有限公司
|
||||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||||
* 开发环境 ADS v1.9.4
|
||||
@@ -30,67 +30,54 @@
|
||||
*
|
||||
* 修改记录
|
||||
* 日期 作者 备注
|
||||
* 2023-05-27 pudding first version
|
||||
* 2023-11-29 pudding first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _seekfree_assistant_h_
|
||||
#define _seekfree_assistant_h_
|
||||
|
||||
#ifndef _zf_device_detector_h_
|
||||
#define _zf_device_detector_h_
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
// 定义接收FIFO大小
|
||||
#define DETECTOR_BUFFER_SIZE ( 0x40 )
|
||||
#define SEEKFREE_ASSISTANT_BUFFER_SIZE ( 0x80 )
|
||||
|
||||
// 定义示波器的最大通道数量
|
||||
#define DETECTOR_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
#define SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
|
||||
// 定义参数调试的最大通道数量
|
||||
#define DETECTOR_SET_PARAMETR_COUNT ( 0x08 )
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT ( 0x08 )
|
||||
|
||||
// 定义图像边线最大数量
|
||||
#define DETECTOR_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
|
||||
// 单片机往上位机发送的帧头
|
||||
#define DETECTOR_SEND_HEAD ( 0xAA )
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA )
|
||||
|
||||
// 摄像头类
|
||||
#define DETECTOR_CAMERA_FUNCTION ( 0x02 )
|
||||
#define DETECTOR_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define DETECTOR_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_FUNCTION ( 0x02 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
|
||||
// 上位机往单片机发送的帧头
|
||||
#define DETECTOR_RECEIVE_HEAD ( 0x55 )
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 )
|
||||
|
||||
// 参数设置类
|
||||
#define DETECTOR_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
|
||||
// 数据发送设备枚举
|
||||
typedef enum
|
||||
{
|
||||
DETECTOR_DEBUG_UART, // 调试串口 使用的串口由DEBUG_UART_INDEX宏定义指定
|
||||
DETECTOR_WIRELESS_UART, // 无线转串口
|
||||
DETECTOR_CH9141, // 9141蓝牙
|
||||
DETECTOR_WIFI_UART, // WIFI转串口
|
||||
DETECTOR_WIFI_SPI, // 高速WIFI SPI
|
||||
DETECTOR_CUSTOM, // 自定义通讯方式 需要自行detector_custom_write_byte函数中实现数据发送
|
||||
}detector_transfer_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
// 摄像头类型枚举
|
||||
typedef enum
|
||||
{
|
||||
// 按照摄像头型号定义
|
||||
DETECTOR_OV7725_BIN = 1,
|
||||
DETECTOR_MT9V03X,
|
||||
DETECTOR_SCC8660,
|
||||
|
||||
SEEKFREE_ASSISTANT_OV7725_BIN = 1,
|
||||
SEEKFREE_ASSISTANT_MT9V03X,
|
||||
SEEKFREE_ASSISTANT_SCC8660,
|
||||
|
||||
// 按照图像类型定义
|
||||
DETECTOR_BINARY = 1,
|
||||
DETECTOR_GRAY,
|
||||
DETECTOR_RGB565,
|
||||
}detector_image_type_enum;
|
||||
SEEKFREE_ASSISTANT_BINARY = 1,
|
||||
SEEKFREE_ASSISTANT_GRAY,
|
||||
SEEKFREE_ASSISTANT_RGB565,
|
||||
}seekfree_assistant_image_type_enum;
|
||||
|
||||
// 摄像头类型枚举
|
||||
typedef enum
|
||||
@@ -100,7 +87,7 @@ typedef enum
|
||||
Y_BOUNDARY, // 发送的图像中边界信息只包含Y,也就是只有纵坐标信息,横坐标根据图像宽度得到,通常很少有这样的需求
|
||||
XY_BOUNDARY, // 发送的图像中边界信息包含X与Y,这样可以指定点在任意位置,就可以方便显示出回弯的效果
|
||||
NO_BOUNDARY, // 发送的图像中没有边线信息
|
||||
}detector_boundary_type_enum;
|
||||
}seekfree_assistant_boundary_type_enum;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -108,8 +95,8 @@ typedef struct
|
||||
uint8 channel_num; // 高四位为功能字 低四位为通道数量
|
||||
uint8 check_sum; // 和校验
|
||||
uint8 length; // 包长度
|
||||
float data[DETECTOR_SET_OSCILLOSCOPE_COUNT]; // 通道数据
|
||||
}detector_oscilloscope_struct;
|
||||
float data[SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT]; // 通道数据
|
||||
}seekfree_assistant_oscilloscope_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
@@ -120,7 +107,7 @@ typedef struct
|
||||
uint8 length; // 包长度(仅包含协议部分)
|
||||
uint16 image_width; // 图像宽度
|
||||
uint16 image_height; // 图像高度
|
||||
}detector_camera_struct;
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
@@ -130,19 +117,19 @@ typedef struct
|
||||
uint8 dot_type; // 点类型 BIT5:1:坐标是16位的 0:坐标是8位的 BIT7-BIT6:0:只有X坐标 1:只有Y坐标 2:X和Y坐标都有 BIT3-BIT0:边界数量
|
||||
uint8 length; // 包长度(仅包含协议部分)
|
||||
uint16 dot_num; // 画点数量
|
||||
uint8 valid_flag; // 通道标识
|
||||
uint8 valid_flag; // 通道标识
|
||||
uint8 reserve; // 保留
|
||||
}detector_camera_dot_struct;
|
||||
}seekfree_assistant_camera_dot_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *image_addr; // 摄像头地址
|
||||
uint16 width; // 图像宽度
|
||||
uint16 height; // 图像高度
|
||||
detector_image_type_enum camera_type; // 摄像头类型
|
||||
void *boundary_x[DETECTOR_CAMERA_MAX_BOUNDARY]; // 边界横坐标数组地址
|
||||
void *boundary_y[DETECTOR_CAMERA_MAX_BOUNDARY]; // 边界纵坐标数组地址
|
||||
}detector_camera_buffer_struct;
|
||||
seekfree_assistant_image_type_enum camera_type; // 摄像头类型
|
||||
void *boundary_x[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // 边界横坐标数组地址
|
||||
void *boundary_y[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // 边界纵坐标数组地址
|
||||
}seekfree_assistant_camera_buffer_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -151,23 +138,24 @@ typedef struct
|
||||
uint8 channel; // 通道
|
||||
uint8 check_sum; // 和校验
|
||||
float data; // 数据
|
||||
}detector_parameter_struct;
|
||||
}seekfree_assistant_parameter_struct;
|
||||
|
||||
|
||||
extern detector_oscilloscope_struct detector_oscilloscope_data; // 虚拟示波器数据
|
||||
extern float detector_parameter[DETECTOR_SET_PARAMETR_COUNT]; // 保存接收到的参数
|
||||
extern seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // 虚拟示波器数据
|
||||
extern float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // 保存接收到的参数
|
||||
extern vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // 参数更新标志位
|
||||
|
||||
uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
|
||||
void detector_oscilloscope_send (detector_oscilloscope_struct *detector_oscilloscope);
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope);
|
||||
|
||||
void detector_camera_information_config (detector_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void detector_camera_boundary_config (detector_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void detector_camera_send (void);
|
||||
|
||||
void detector_data_analysis (void);
|
||||
void detector_init (detector_transfer_type_enum transfer_type);
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void seekfree_assistant_camera_send (void);
|
||||
|
||||
void seekfree_assistant_data_analysis (void);
|
||||
void seekfree_assistant_init (void);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||
*
|
||||
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||
*
|
||||
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2023-11-29 pudding first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
uint32 len = 0;
|
||||
|
||||
len = debug_send_buffer(buff, length);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length Ҫ<><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
uint32 len = 0;
|
||||
|
||||
len = debug_read_ring_buffer(buff, length);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
#include "zf_device_camera.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
|
||||
static fifo_struct bluetooth_ch9141_fifo; // fifo<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
static fifo_obj_struct bluetooth_ch9141_fifo; // fifo<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
static uint8 bluetooth_ch9141_buffer[BLUETOOTH_CH9141_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
static uint8 bluetooth_ch9141_data = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#include "zf_device_camera.h"
|
||||
|
||||
|
||||
fifo_struct camera_receiver_fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fifo<66>ṹ<EFBFBD><E1B9B9>
|
||||
fifo_obj_struct camera_receiver_fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fifo<66>ṹ<EFBFBD><E1B9B9>
|
||||
uint8 camera_receiver_buffer[CAMERA_RECEIVER_BUFFER_SIZE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 camera_send_image_frame_header[4] = {0x00, 0xFF, 0x01, 0x01}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݷ<EFBFBD><DDB7>͵<EFBFBD><CDB5><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>֡ͷ
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
//=================================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||
#define CAMERA_RECEIVER_BUFFER_SIZE (8) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
extern fifo_struct camera_receiver_fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fifo<66>ṹ<EFBFBD><E1B9B9>
|
||||
extern fifo_obj_struct camera_receiver_fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fifo<66>ṹ<EFBFBD><E1B9B9>
|
||||
extern uint8 camera_send_image_frame_header[4]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݷ<EFBFBD><DDB7>͵<EFBFBD><CDB5><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>֡ͷ
|
||||
//=================================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||
|
||||
|
||||
@@ -1,628 +0,0 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||
*
|
||||
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||
*
|
||||
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_detector
|
||||
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2023-05-27 pudding first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
|
||||
#include "zf_device_detector.h"
|
||||
|
||||
|
||||
typedef uint32 (*detector_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*detector_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
detector_transfer_type_enum detector_transfer_type; // <20><><EFBFBD>ݴ<EFBFBD><DDB4>䷽ʽ
|
||||
|
||||
detector_transfer_callback_function detector_transfer_callback; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
detector_receive_callback_function detector_receive_callback; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
detector_oscilloscope_struct detector_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static detector_camera_struct detector_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static detector_camera_dot_struct detector_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static detector_camera_buffer_struct detector_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
static fifo_struct detector_fifo;
|
||||
static uint8 detector_buffer[DETECTOR_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float detector_parameter[DETECTOR_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4>ڷ<EFBFBD><DAB7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
//// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
//// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//uint32 detector_debug_uart_transfer (const uint8 *buff, uint32 length)
|
||||
//{
|
||||
// uart_write_buffer(DEBUG_UART_INDEX, buff, length);
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4>ڽ<EFBFBD><DABD>պ<EFBFBD><D5BA><EFBFBD>
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>յij<D5B5><C4B3><EFBFBD>
|
||||
//// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʵ<>ʽ<EFBFBD><CABD>ճ<EFBFBD><D5B3><EFBFBD>
|
||||
//// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//uint32 detector_debug_uart_receive (uint8 *buff, uint32 length)
|
||||
//{
|
||||
// return debug_read_ring_buffer(buff, length);
|
||||
//}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ֽڷ<D6BD><DAB7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 detector_custom_write_byte(const uint8 data)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD>
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>巢<EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䷽ʽ<E4B7BD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ַ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 detector_custom_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
uint32 send_length;
|
||||
send_length = length;
|
||||
|
||||
while(send_length--)
|
||||
{
|
||||
detector_custom_write_byte(*buff);
|
||||
buff++;
|
||||
}
|
||||
|
||||
return send_length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD>ֽڽ<D6BD><DABD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0:<3A><><EFBFBD>ճɹ<D5B3> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> detector_custom_receive_byte <20><> detector_custom_receive<76><65><EFBFBD><EFBFBD> ֻ<><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 detector_custom_receive_byte (uint8 data)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD>
|
||||
if(FIFO_SUCCESS != fifo_write_buffer(&detector_fifo, &data, 1))
|
||||
{
|
||||
return_state = 1;
|
||||
}
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0:<3A><><EFBFBD>ճɹ<D5B3> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> detector_custom_receive_byte <20><> detector_custom_receive<76><65><EFBFBD><EFBFBD> ֻ<><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 detector_custom_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
if(FIFO_SUCCESS != fifo_write_buffer(&detector_fifo, buff, length))
|
||||
{
|
||||
return_state = 1;
|
||||
}
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4>ͷ<EFBFBD><CDB7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *send_data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> send_length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint32 detector_transfer (void *send_data, uint32 send_length)
|
||||
{
|
||||
return detector_transfer_callback((const uint8 *)send_data, send_length);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 detector_sum (uint8 *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_data_send (detector_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
|
||||
detector_camera_data.head = DETECTOR_SEND_HEAD;
|
||||
detector_camera_data.function = DETECTOR_CAMERA_FUNCTION;
|
||||
detector_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
detector_camera_data.length = sizeof(detector_camera_struct);
|
||||
detector_camera_data.image_width = width;
|
||||
detector_camera_data.image_height = height;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
detector_transfer(&detector_camera_data, sizeof(detector_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
{
|
||||
case DETECTOR_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case DETECTOR_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case DETECTOR_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
{
|
||||
detector_transfer(image_addr, image_size);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƺ<EFBFBD><C6BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_dot_send (detector_camera_buffer_struct *buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wifi_spi_send_multi_struct multi_buffer;
|
||||
|
||||
dot_bytes = detector_camera_dot_data.dot_num;
|
||||
|
||||
if(detector_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ʱ WIFI SPI<50><49><EFBFBD>ö<EFBFBD>Դ<EFBFBD><D4B4>ַ<EFBFBD><D6B7><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>,<2C><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
||||
if(DETECTOR_WIFI_SPI == detector_transfer_type)
|
||||
{
|
||||
multi_buffer.source[0] = (uint8 *)&detector_camera_dot_data;
|
||||
multi_buffer.length[0] = sizeof(detector_camera_dot_struct);
|
||||
|
||||
for(i=0; i < DETECTOR_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
multi_buffer.source[i * 2 + 1] = buffer->boundary_x[i];
|
||||
multi_buffer.source[i * 2 + 2] = buffer->boundary_y[i];
|
||||
|
||||
multi_buffer.length[i * 2 + 1] = dot_bytes;
|
||||
multi_buffer.length[i * 2 + 2] = dot_bytes;
|
||||
}
|
||||
|
||||
wifi_spi_send_buffer_multi(&multi_buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_transfer(&detector_camera_dot_data, sizeof(detector_camera_dot_struct));
|
||||
|
||||
for(i=0; i < DETECTOR_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
detector_transfer(buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
detector_transfer(buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *detector_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_oscilloscope_send(&detector_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_oscilloscope_send (detector_oscilloscope_struct *detector_oscilloscope)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
detector_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(DETECTOR_SET_OSCILLOSCOPE_COUNT >= detector_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
detector_oscilloscope->head = DETECTOR_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(detector_oscilloscope_struct) - (DETECTOR_SET_OSCILLOSCOPE_COUNT - detector_oscilloscope->channel_num) * 4;
|
||||
detector_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_oscilloscope->channel_num |= DETECTOR_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_oscilloscope->check_sum = 0;
|
||||
detector_oscilloscope->check_sum = detector_sum((uint8 *)&detector_oscilloscope_data, packet_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>detector_oscilloscope_data.data[]
|
||||
|
||||
detector_transfer((uint8 *)detector_oscilloscope, packet_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_information_config(DETECTOR_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_information_config (detector_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
{
|
||||
detector_camera_dot_data.head = DETECTOR_SEND_HEAD;
|
||||
detector_camera_dot_data.function = DETECTOR_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
detector_camera_dot_data.length = sizeof(detector_camera_dot_struct);
|
||||
|
||||
detector_camera_buffer.camera_type = camera_type;
|
||||
detector_camera_buffer.image_addr = image_addr;
|
||||
detector_camera_buffer.width = width;
|
||||
detector_camera_buffer.height = height;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_boundary_config (detector_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>detector_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != detector_camera_buffer.camera_type);
|
||||
|
||||
detector_camera_dot_data.dot_num = dot_num;
|
||||
|
||||
detector_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
detector_camera_buffer.boundary_x[i] = NULL;
|
||||
detector_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 0;
|
||||
detector_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 1;
|
||||
detector_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 2;
|
||||
detector_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < detector_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 0;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 1;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 2;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < detector_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 0;
|
||||
detector_camera_buffer.boundary_x[i] = dot_x1;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 1;
|
||||
detector_camera_buffer.boundary_x[i] = dot_x2;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 2;
|
||||
detector_camera_buffer.boundary_x[i] = dot_x3;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < detector_camera_buffer.width) || (255 < detector_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
detector_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>detector_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != detector_camera_buffer.camera_type);
|
||||
|
||||
detector_camera_data_send(detector_camera_buffer.camera_type, detector_camera_buffer.image_addr, detector_camera_dot_data.dot_type & 0x0f, detector_camera_buffer.width, detector_camera_buffer.height);
|
||||
|
||||
if(detector_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
detector_camera_dot_send(&detector_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
detector_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[DETECTOR_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
if(DETECTOR_CUSTOM != detector_transfer_type)
|
||||
{
|
||||
read_length = detector_receive_callback((uint8 *)temp_buffer, DETECTOR_BUFFER_SIZE);
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&detector_fifo, (uint8 *)temp_buffer, read_length);
|
||||
}
|
||||
}
|
||||
|
||||
while(sizeof(detector_parameter_struct) <= fifo_used(&detector_fifo))
|
||||
{
|
||||
read_length = sizeof(detector_parameter_struct);
|
||||
fifo_read_buffer(&detector_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
|
||||
if(DETECTOR_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<><C3BB>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD>FIFO<46><4F>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (detector_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == detector_sum((uint8 *)temp_buffer, sizeof(detector_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&detector_fifo, NULL, &read_length, FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> <20><>ʼ<EFBFBD><CABC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> transfer_type ѡ<><D1A1>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_init (detector_transfer_type_enum transfer_type)
|
||||
{
|
||||
detector_transfer_type = transfer_type;
|
||||
|
||||
fifo_init(&detector_fifo, FIFO_DATA_8BIT, detector_buffer, DETECTOR_BUFFER_SIZE);
|
||||
|
||||
switch(detector_transfer_type)
|
||||
{
|
||||
case DETECTOR_DEBUG_UART:
|
||||
{
|
||||
detector_transfer_callback = debug_send_buffer;
|
||||
detector_receive_callback = debug_read_ring_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_WIRELESS_UART:
|
||||
{
|
||||
detector_transfer_callback = wireless_uart_send_buffer;
|
||||
detector_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_CH9141:
|
||||
{
|
||||
detector_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
detector_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_WIFI_UART:
|
||||
{
|
||||
detector_transfer_callback = wifi_uart_send_buffer;
|
||||
detector_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_WIFI_SPI:
|
||||
{
|
||||
detector_transfer_callback = wifi_spi_send_buffer;
|
||||
detector_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_CUSTOM:
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>detector_custom_write_byte<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ<DDB5><C4B4><EFBFBD>
|
||||
detector_transfer_callback = detector_custom_transfer;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD>ջص<D5BB>
|
||||
|
||||
// <20>ں<EFBFBD><DABA>ʵ<EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>detector_custom_receive <20><><EFBFBD><EFBFBD> detector_custom_receive_byte<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||
// detector_custom_receive <20><><EFBFBD><EFBFBD> detector_custom_receive_byte<74><65><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ֽڽ<D6BD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻᱻд<E1B1BB><D0B4>detector_fifo<66>У<EFBFBD> <20>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
//detector_receive_callback = detector_custom_receive;
|
||||
|
||||
}break;
|
||||
}
|
||||
}
|
||||
@@ -58,7 +58,7 @@ uint8 gps_tau1201_flag = 0;
|
||||
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static fifo_struct gps_tau1201_receiver_fifo; //
|
||||
static fifo_obj_struct gps_tau1201_receiver_fifo; //
|
||||
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <20><><EFBFBD><EFBFBD>״̬
|
||||
|
||||
@@ -501,11 +501,11 @@ uint8 ov7725_init (void)
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
|
||||
if(ov7725_get_config(ov7725_get_confing_buffer))
|
||||
{
|
||||
uart_rx_interrupt(OV7725_COF_UART, 0);
|
||||
system_delay_ms(200);
|
||||
set_camera_type(CAMERA_BIN_IIC, ov7725_vsync_handler, ov7725_dma_handler, ov7725_uart_handler); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
if(ov7725_iic_init())
|
||||
{
|
||||
uart_rx_interrupt(OV7725_COF_UART, 0);
|
||||
system_delay_ms(200);
|
||||
set_camera_type(CAMERA_BIN_IIC, ov7725_vsync_handler, ov7725_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
if(ov7725_iic_init())
|
||||
{
|
||||
zf_log(0, "OV7725 IIC error.");
|
||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||
return_state = 1;
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
#define WAIT_TIME_OUT (10000) // <20><>ָ<EFBFBD><D6B8><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB>ms
|
||||
|
||||
#define WIFI_SPI_WRITE_MAX 4092 // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>SPIͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
#define WIFI_SPI_WRITE_MAX 128 // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>SPIͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
|
||||
#define WIFI_SPI_WRITE_REQUEST 0x01
|
||||
#define WIFI_SPI_CHECK_STATE 0x02
|
||||
@@ -80,7 +80,7 @@
|
||||
volatile wifi_spi_buffer_state_enum wifi_buffer_state;
|
||||
volatile wifi_spi_transmit_state_enum wifi_transmit_state;
|
||||
|
||||
static fifo_struct wifi_spi_fifo;
|
||||
static fifo_obj_struct wifi_spi_fifo;
|
||||
static uint8 wifi_spi_buffer[WIFI_SPI_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
vuint8 wifi_spi_ack_flag = 0; // 0<><30>ģ<EFBFBD><C4A3>δӦ<CEB4><D3A6> 1<><31>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
@@ -88,7 +88,7 @@ uint8 wifi_spi_init_flag; // 0
|
||||
vuint8 wifi_spi_packet_num; // <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݰ<EFBFBD>ID
|
||||
vuint32 wifi_spi_send_remain_length; // ʣ<><CAA3><EFBFBD>ķ<EFBFBD><C4B7>ͳ<EFBFBD><CDB3><EFBFBD>
|
||||
|
||||
uint8 wifi_spi_receive_buffer[WIFI_SPI_WRITE_MAX];
|
||||
|
||||
|
||||
wifi_spi_information_struct wifi_spi_information;
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -145,7 +145,7 @@ static wifi_spi_buffer_state_enum wifi_spi_read_state(uint16 *length)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// @return void
|
||||
// Sample usage:
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -165,7 +165,26 @@ static void wifi_spi_send_done(void)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// @return void
|
||||
// Sample usage:
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void wifi_spi_receive_start(void)
|
||||
{
|
||||
wifi_spi_buffer_struct head;
|
||||
|
||||
head.cmd = WIFI_SPI_READ_DATA;
|
||||
head.addr = WIFI_SPI_WRITE_ADDR;
|
||||
head.dummy = 0x00;
|
||||
|
||||
gpio_set_level(WIFI_SPI_CS_PIN, 0);
|
||||
spi_write_8bit_array(WIFI_SPI_INDEX, (const uint8 *)&head.cmd, 3);
|
||||
wifi_transmit_state = TRANSMIT_READ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// @return void
|
||||
// Sample usage:
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -173,6 +192,8 @@ static void wifi_spi_receive_done(void)
|
||||
{
|
||||
wifi_spi_buffer_struct head;
|
||||
|
||||
gpio_set_level(WIFI_SPI_CS_PIN, 1);
|
||||
|
||||
head.cmd = WIFI_SPI_READ_END;
|
||||
head.addr = WIFI_SPI_WRITE_ADDR;
|
||||
head.dummy = 0x00;
|
||||
@@ -242,18 +263,7 @@ static void wifi_spi_send_data_multi(wifi_spi_send_multi_struct *multi_buffer)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void wifi_spi_receive_data(uint8 *buff, uint16 length)
|
||||
{
|
||||
wifi_spi_buffer_struct head;
|
||||
|
||||
head.cmd = WIFI_SPI_READ_DATA;
|
||||
head.addr = WIFI_SPI_WRITE_ADDR;
|
||||
head.dummy = 0x00;
|
||||
|
||||
wifi_transmit_state = TRANSMIT_READ;
|
||||
gpio_set_level(WIFI_SPI_CS_PIN, 0);
|
||||
spi_transfer_8bit(WIFI_SPI_INDEX, (const uint8 *)&head.cmd, &head.cmd, 3);
|
||||
spi_transfer_8bit(WIFI_SPI_INDEX, (const uint8 *)buff, buff, length);
|
||||
gpio_set_level(WIFI_SPI_CS_PIN, 1);
|
||||
wifi_spi_receive_done();
|
||||
spi_read_8bit_array(WIFI_SPI_INDEX, buff, length);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -309,22 +319,38 @@ static void wifi_spi_send_command(const char *str)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ȡģ<C8A1>鷢<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// @return void
|
||||
// Sample usage:
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void wifi_spi_check_state_read_buffer(void)
|
||||
{
|
||||
uint16 wifi_spi_receive_length; // <20><><EFBFBD>ν<EFBFBD><CEBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8 wifi_spi_receive_buffer[WIFI_SPI_WRITE_MAX];
|
||||
|
||||
// <20><>ѯWIFIģ<49><C4A3><EFBFBD><EFBFBD>״̬
|
||||
wifi_buffer_state = wifi_spi_read_state(&wifi_spi_receive_length);
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡWIFIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><F2B1A3B4><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
if(BUFFER_READ == wifi_buffer_state)
|
||||
{
|
||||
wifi_spi_receive_data((uint8 *)wifi_spi_receive_buffer, wifi_spi_receive_length);
|
||||
fifo_write_buffer(&wifi_spi_fifo, wifi_spi_receive_buffer, wifi_spi_receive_length); // <20><><EFBFBD><EFBFBD> FIFO
|
||||
wifi_spi_receive_start();
|
||||
do
|
||||
{
|
||||
if(wifi_spi_receive_length > WIFI_SPI_WRITE_MAX)
|
||||
{
|
||||
wifi_spi_receive_data((uint8 *)wifi_spi_receive_buffer, WIFI_SPI_WRITE_MAX);
|
||||
fifo_write_buffer(&wifi_spi_fifo, wifi_spi_receive_buffer, WIFI_SPI_WRITE_MAX); // <20><><EFBFBD><EFBFBD> FIFO
|
||||
wifi_spi_receive_length = wifi_spi_receive_length - WIFI_SPI_WRITE_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
wifi_spi_receive_data((uint8 *)wifi_spi_receive_buffer, wifi_spi_receive_length);
|
||||
fifo_write_buffer(&wifi_spi_fifo, wifi_spi_receive_buffer, wifi_spi_receive_length); // <20><><EFBFBD><EFBFBD> FIFO
|
||||
wifi_spi_receive_length = 0;
|
||||
}
|
||||
}while(wifi_spi_receive_length > 0);
|
||||
wifi_spi_receive_done();
|
||||
}
|
||||
else if(BUFFER_IDLE == wifi_buffer_state)
|
||||
{
|
||||
@@ -335,7 +361,7 @@ void wifi_spi_check_state_read_buffer(void)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ģ<EFBFBD><C4A3>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// @return uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
|
||||
// Sample usage:
|
||||
@@ -787,7 +813,7 @@ static uint8 wifi_spi_set_transfer_model (char *model)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> state 0:<3A><> Wi-Fi ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ҹر<D2B9> Wi-Fi RF----1: Station ģʽ----2: SoftAP ģʽ----3: SoftAP+Station ģʽ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_set_model("1");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_set_model (wifi_spi_mode_enum mode)
|
||||
{
|
||||
@@ -836,7 +862,7 @@ uint8 wifi_spi_close_sleep_model (void)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_disconnected_wifi();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_disconnected_wifi (void)
|
||||
{
|
||||
@@ -855,7 +881,7 @@ uint8 wifi_spi_disconnected_wifi (void)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_entry_serianet();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_entry_serianet (void)
|
||||
{
|
||||
@@ -874,7 +900,7 @@ uint8 wifi_spi_entry_serianet (void)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> model 0:<3A>ر<EFBFBD><EFBFBD><CDB8>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8>ģʽ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_exit_serianet(1);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_exit_serianet (void)
|
||||
{
|
||||
@@ -1042,7 +1068,7 @@ uint8 wifi_spi_connect_udp_client (char *ip, char *port, char *local_port, wifi_
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_disconnect_link();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_disconnect_link (void)
|
||||
{
|
||||
@@ -1191,7 +1217,7 @@ uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 len)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFiģ<69><C4A3> <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ַ)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *multi_buffer <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ַ<EFBFBD>Լ<EFBFBD>ÿ<EFBFBD><C3BF>Դ<EFBFBD><D4B4>ַ<EFBFBD><D6B7>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>ͨѶʱ<D1B6>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3>Ȳ<EFBFBD><C8B2>ܳ<EFBFBD><DCB3><EFBFBD>4092
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 wifi_spi_send_buffer_multi (wifi_spi_send_multi_struct *multi_buffer)
|
||||
@@ -1278,7 +1304,7 @@ uint32 wifi_spi_send_string (const char *str)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>鳤<EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>sizeof<6F><66><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʽ<EFBFBD><CABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint8 test_buffer[256]; wifi_spi_read_buffer(&test_buffer[0], sizeof(test_buffer));
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 len)
|
||||
{
|
||||
@@ -1289,7 +1315,7 @@ uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 len)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> wifi spi handshake<6B>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void wifi_spi_callback (void)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
wifi_uart_information_struct wifi_uart_information; // ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
static fifo_struct wifi_uart_fifo;
|
||||
static fifo_obj_struct wifi_uart_fifo;
|
||||
static uint8 wifi_uart_buffer[WIFI_UART_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static uint8 wifi_uart_data;
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
#include "zf_device_type.h"
|
||||
#include "zf_device_wireless_uart.h"
|
||||
|
||||
static fifo_struct wireless_uart_fifo;
|
||||
static fifo_obj_struct wireless_uart_fifo;
|
||||
static uint8 wireless_uart_buffer[WIRELESS_UART_BUFFER_SIZE];
|
||||
|
||||
static uint8 wireless_uart_data = 0;
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2022-09-15 pudding first version
|
||||
* 2023-11-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _zf_driver_delay_h_
|
||||
|
||||
@@ -85,7 +85,7 @@ uint8 dma_init (IfxDma_ChannelId dma_ch, uint8 *source_addr, uint8 *destination_
|
||||
uint8 list_num, i;
|
||||
uint16 single_channel_dma_count;
|
||||
|
||||
zf_assert(!(dma_count%8)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ8<CEAA>ı<EFBFBD><C4B1><EFBFBD>
|
||||
zf_assert(!(dma_count % 8)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ8<CEAA>ı<EFBFBD><C4B1><EFBFBD>
|
||||
|
||||
|
||||
list_num = 1;
|
||||
|
||||
@@ -402,7 +402,6 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
||||
{
|
||||
IfxSrc_disable(src);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user