mirror of
https://github.com/sipeed/LicheeRV-Nano-Build.git
synced 2026-09-11 05:09:56 -05:00
Added support for OLED display of RTSP addresses
Added support for OLED display of RTSP addresses
This commit is contained in:
@@ -7,7 +7,7 @@ include ../sample.mk
|
||||
|
||||
SDIR = $(PWD)
|
||||
SRCS = $(wildcard $(SDIR)/*.c)
|
||||
INCS = -I$(MW_INC) -I$(ISP_INC) -I../common/ -I$(KERNEL_INC) -I$(MW_INC)/linux
|
||||
INCS = -I$(MW_INC) -I$(ISP_INC) -I../common/ -I$(KERNEL_INC) -I$(MW_INC)/linux -I$(SDIR)
|
||||
|
||||
SRCS_CPP += $(wildcard $(SDIR)/media_server-1.0.1/*.cpp) \
|
||||
$(wildcard $(SDIR)/media_server-1.0.1/media/*.cpp)
|
||||
|
||||
216
middleware/v2/sample/test_mmf/fomat.h
Normal file
216
middleware/v2/sample/test_mmf/fomat.h
Normal file
@@ -0,0 +1,216 @@
|
||||
#ifndef __OLED_FOMAT_H__
|
||||
#define __OLED_FOMAT_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#include <linux/cvi_common.h>
|
||||
|
||||
/************************************6*8的点阵************************************/
|
||||
const uint8_t oled_asc2_0806[][6] ={
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00},// sp
|
||||
{0x00, 0x00, 0x00, 0x2f, 0x00, 0x00},// !
|
||||
{0x00, 0x00, 0x07, 0x00, 0x07, 0x00},// "
|
||||
{0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14},// #
|
||||
{0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12},// $
|
||||
{0x00, 0x62, 0x64, 0x08, 0x13, 0x23},// %
|
||||
{0x00, 0x36, 0x49, 0x55, 0x22, 0x50},// &
|
||||
{0x00, 0x00, 0x05, 0x03, 0x00, 0x00},// '
|
||||
{0x00, 0x00, 0x1c, 0x22, 0x41, 0x00},// (
|
||||
{0x00, 0x00, 0x41, 0x22, 0x1c, 0x00},// )
|
||||
{0x00, 0x14, 0x08, 0x3E, 0x08, 0x14},// *
|
||||
{0x00, 0x08, 0x08, 0x3E, 0x08, 0x08},// +
|
||||
{0x00, 0x00, 0x00, 0xA0, 0x60, 0x00},// ,
|
||||
{0x00, 0x08, 0x08, 0x08, 0x08, 0x08},// -
|
||||
{0x00, 0x00, 0x60, 0x60, 0x00, 0x00},// .
|
||||
{0x00, 0x20, 0x10, 0x08, 0x04, 0x02},// /
|
||||
{0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E},// 0
|
||||
{0x00, 0x00, 0x42, 0x7F, 0x40, 0x00},// 1
|
||||
{0x00, 0x42, 0x61, 0x51, 0x49, 0x46},// 2
|
||||
{0x00, 0x21, 0x41, 0x45, 0x4B, 0x31},// 3
|
||||
{0x00, 0x18, 0x14, 0x12, 0x7F, 0x10},// 4
|
||||
{0x00, 0x27, 0x45, 0x45, 0x45, 0x39},// 5
|
||||
{0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30},// 6
|
||||
{0x00, 0x01, 0x71, 0x09, 0x05, 0x03},// 7
|
||||
{0x00, 0x36, 0x49, 0x49, 0x49, 0x36},// 8
|
||||
{0x00, 0x06, 0x49, 0x49, 0x29, 0x1E},// 9
|
||||
{0x00, 0x00, 0x36, 0x36, 0x00, 0x00},// :
|
||||
{0x00, 0x00, 0x56, 0x36, 0x00, 0x00},// ;
|
||||
{0x00, 0x08, 0x14, 0x22, 0x41, 0x00},// <
|
||||
{0x00, 0x14, 0x14, 0x14, 0x14, 0x14},// =
|
||||
{0x00, 0x00, 0x41, 0x22, 0x14, 0x08},// >
|
||||
{0x00, 0x02, 0x01, 0x51, 0x09, 0x06},// ?
|
||||
{0x00, 0x32, 0x49, 0x59, 0x51, 0x3E},// @
|
||||
{0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C},// A
|
||||
{0x00, 0x7F, 0x49, 0x49, 0x49, 0x36},// B
|
||||
{0x00, 0x3E, 0x41, 0x41, 0x41, 0x22},// C
|
||||
{0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C},// D
|
||||
{0x00, 0x7F, 0x49, 0x49, 0x49, 0x41},// E
|
||||
{0x00, 0x7F, 0x09, 0x09, 0x09, 0x01},// F
|
||||
{0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A},// G
|
||||
{0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F},// H
|
||||
{0x00, 0x00, 0x41, 0x7F, 0x41, 0x00},// I
|
||||
{0x00, 0x20, 0x40, 0x41, 0x3F, 0x01},// J
|
||||
{0x00, 0x7F, 0x08, 0x14, 0x22, 0x41},// K
|
||||
{0x00, 0x7F, 0x40, 0x40, 0x40, 0x40},// L
|
||||
{0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F},// M
|
||||
{0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F},// N
|
||||
{0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E},// O
|
||||
{0x00, 0x7F, 0x09, 0x09, 0x09, 0x06},// P
|
||||
{0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E},// Q
|
||||
{0x00, 0x7F, 0x09, 0x19, 0x29, 0x46},// R
|
||||
{0x00, 0x46, 0x49, 0x49, 0x49, 0x31},// S
|
||||
{0x00, 0x01, 0x01, 0x7F, 0x01, 0x01},// T
|
||||
{0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F},// U
|
||||
{0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F},// V
|
||||
{0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F},// W
|
||||
{0x00, 0x63, 0x14, 0x08, 0x14, 0x63},// X
|
||||
{0x00, 0x07, 0x08, 0x70, 0x08, 0x07},// Y
|
||||
{0x00, 0x61, 0x51, 0x49, 0x45, 0x43},// Z
|
||||
{0x00, 0x00, 0x7F, 0x41, 0x41, 0x00},// [
|
||||
{0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55},// 55
|
||||
{0x00, 0x00, 0x41, 0x41, 0x7F, 0x00},// ]
|
||||
{0x00, 0x04, 0x02, 0x01, 0x02, 0x04},// ^
|
||||
{0x00, 0x40, 0x40, 0x40, 0x40, 0x40},// _
|
||||
{0x00, 0x00, 0x01, 0x02, 0x04, 0x00},// '
|
||||
{0x00, 0x20, 0x54, 0x54, 0x54, 0x78},// a
|
||||
{0x00, 0x7F, 0x48, 0x44, 0x44, 0x38},// b
|
||||
{0x00, 0x38, 0x44, 0x44, 0x44, 0x20},// c
|
||||
{0x00, 0x38, 0x44, 0x44, 0x48, 0x7F},// d
|
||||
{0x00, 0x38, 0x54, 0x54, 0x54, 0x18},// e
|
||||
{0x00, 0x08, 0x7E, 0x09, 0x01, 0x02},// f
|
||||
{0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C},// g
|
||||
{0x00, 0x7F, 0x08, 0x04, 0x04, 0x78},// h
|
||||
{0x00, 0x00, 0x44, 0x7D, 0x40, 0x00},// i
|
||||
{0x00, 0x40, 0x80, 0x84, 0x7D, 0x00},// j
|
||||
{0x00, 0x7F, 0x10, 0x28, 0x44, 0x00},// k
|
||||
{0x00, 0x00, 0x41, 0x7F, 0x40, 0x00},// l
|
||||
{0x00, 0x7C, 0x04, 0x18, 0x04, 0x78},// m
|
||||
{0x00, 0x7C, 0x08, 0x04, 0x04, 0x78},// n
|
||||
{0x00, 0x38, 0x44, 0x44, 0x44, 0x38},// o
|
||||
{0x00, 0xFC, 0x24, 0x24, 0x24, 0x18},// p
|
||||
{0x00, 0x18, 0x24, 0x24, 0x18, 0xFC},// q
|
||||
{0x00, 0x7C, 0x08, 0x04, 0x04, 0x08},// r
|
||||
{0x00, 0x48, 0x54, 0x54, 0x54, 0x20},// s
|
||||
{0x00, 0x04, 0x3F, 0x44, 0x40, 0x20},// t
|
||||
{0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C},// u
|
||||
{0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C},// v
|
||||
{0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C},// w
|
||||
{0x00, 0x44, 0x28, 0x10, 0x28, 0x44},// x
|
||||
{0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C},// y
|
||||
{0x00, 0x44, 0x64, 0x54, 0x4C, 0x44},// z
|
||||
{0x14, 0x14, 0x14, 0x14, 0x14, 0x14},// horiz lines
|
||||
|
||||
};
|
||||
|
||||
|
||||
//16*16 ASCII字符集点阵
|
||||
const uint8_t oled_asc2_1608[][16]={
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
|
||||
{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},/*"!",1*/
|
||||
{0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
|
||||
{0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00},/*"#",3*/
|
||||
{0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00},/*"$",4*/
|
||||
{0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00},/*"%",5*/
|
||||
{0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10},/*"&",6*/
|
||||
{0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
|
||||
{0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00},/*"(",8*/
|
||||
{0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00},/*")",9*/
|
||||
{0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00},/*"*",10*/
|
||||
{0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00},/*"+",11*/
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00},/*",",12*/
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01},/*"-",13*/
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00},/*".",14*/
|
||||
{0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00},/*"/",15*/
|
||||
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},/*"0",16*/
|
||||
{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"1",17*/
|
||||
{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},/*"2",18*/
|
||||
{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},/*"3",19*/
|
||||
{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},/*"4",20*/
|
||||
{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},/*"5",21*/
|
||||
{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},/*"6",22*/
|
||||
{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},/*"7",23*/
|
||||
{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},/*"8",24*/
|
||||
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00},/*"9",25*/
|
||||
{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},/*":",26*/
|
||||
{0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00},/*";",27*/
|
||||
{0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00},/*"<",28*/
|
||||
{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"=",29*/
|
||||
{0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00},/*">",30*/
|
||||
{0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00},/*"?",31*/
|
||||
{0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00},/*"@",32*/
|
||||
{0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20},/*"A",33*/
|
||||
{0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00},/*"B",34*/
|
||||
{0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00},/*"C",35*/
|
||||
{0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00},/*"D",36*/
|
||||
{0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00},/*"E",37*/
|
||||
{0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00},/*"F",38*/
|
||||
{0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00},/*"G",39*/
|
||||
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20},/*"H",40*/
|
||||
{0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"I",41*/
|
||||
{0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00},/*"J",42*/
|
||||
{0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00},/*"K",43*/
|
||||
{0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00},/*"L",44*/
|
||||
{0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00},/*"M",45*/
|
||||
{0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00},/*"N",46*/
|
||||
{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00},/*"O",47*/
|
||||
{0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00},/*"P",48*/
|
||||
{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00},/*"Q",49*/
|
||||
{0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20},/*"R",50*/
|
||||
{0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00},/*"S",51*/
|
||||
{0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00},/*"T",52*/
|
||||
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"U",53*/
|
||||
{0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00},/*"V",54*/
|
||||
{0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00},/*"W",55*/
|
||||
{0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20},/*"X",56*/
|
||||
{0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00},/*"Y",57*/
|
||||
{0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00},/*"Z",58*/
|
||||
{0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00},/*"[",59*/
|
||||
{0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00},/*"\",60*/
|
||||
{0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00},/*"]",61*/
|
||||
{0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"_",63*/
|
||||
{0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
|
||||
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20},/*"a",65*/
|
||||
{0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00},/*"b",66*/
|
||||
{0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00},/*"c",67*/
|
||||
{0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20},/*"d",68*/
|
||||
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00},/*"e",69*/
|
||||
{0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"f",70*/
|
||||
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00},/*"g",71*/
|
||||
{0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20},/*"h",72*/
|
||||
{0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"i",73*/
|
||||
{0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00},/*"j",74*/
|
||||
{0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00},/*"k",75*/
|
||||
{0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"l",76*/
|
||||
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F},/*"m",77*/
|
||||
{0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20},/*"n",78*/
|
||||
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"o",79*/
|
||||
{0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00},/*"p",80*/
|
||||
{0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80},/*"q",81*/
|
||||
{0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00},/*"r",82*/
|
||||
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00},/*"s",83*/
|
||||
{0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00},/*"t",84*/
|
||||
{0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20},/*"u",85*/
|
||||
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00},/*"v",86*/
|
||||
{0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00},/*"w",87*/
|
||||
{0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00},/*"x",88*/
|
||||
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00},/*"y",89*/
|
||||
{0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00},/*"z",90*/
|
||||
{0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40},/*"{",91*/
|
||||
{0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},/*"|",92*/
|
||||
{0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00},/*"}",93*/
|
||||
{0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* End of #ifndef __OLED_FOMAT_H__*/
|
||||
@@ -5,6 +5,8 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/i2c-dev.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/prctl.h>
|
||||
@@ -21,6 +23,7 @@
|
||||
#include "sophgo_middleware.h"
|
||||
// #include "vo_uapi.h"
|
||||
#include "rtsp-server.h"
|
||||
#include "fomat.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
@@ -70,6 +73,305 @@ static uint64_t _get_time_us(void)
|
||||
return tv.tv_usec + tv.tv_sec * 1000000;
|
||||
}
|
||||
|
||||
#define OLED_DISABLE 0
|
||||
#define OLED_ENABLE 1
|
||||
#define oled_i2c_addr 0x3D
|
||||
#define OLED_CMD 0x00
|
||||
#define OLED_DATA 0x40
|
||||
|
||||
// int oled_dev;
|
||||
int oled_i2c_init(uint8_t _EN, int * oled_dev)
|
||||
{
|
||||
int ret;
|
||||
if(_EN) {
|
||||
*oled_dev = open("/dev/i2c-3", O_RDWR, 0600);
|
||||
if (*oled_dev < 0) {
|
||||
CVI_TRACE_SNS(CVI_DBG_ERR, "Open /dev/cvi_i2c_drv-3 error!\n");
|
||||
return CVI_FAILURE;
|
||||
}
|
||||
|
||||
ret = ioctl(*oled_dev, I2C_SLAVE_FORCE, oled_i2c_addr);
|
||||
if (ret < 0) {
|
||||
printf("I2C_SLAVE_FORCE error! = %d\n", ret);
|
||||
close(*oled_dev);
|
||||
*oled_dev = -1;
|
||||
return ret;
|
||||
}
|
||||
printf("I2C_SLAVE_FORCE OK! = %d\n", ret);
|
||||
return ret;
|
||||
} else {
|
||||
if (*oled_dev >= 0) {
|
||||
close(*oled_dev);
|
||||
*oled_dev = -1;
|
||||
ret = 0;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int oled_read_register(int _fb, uint8_t addr)
|
||||
{
|
||||
int ret, data;
|
||||
CVI_U8 buf[2];
|
||||
|
||||
if (_fb < 0)
|
||||
return CVI_FAILURE;
|
||||
|
||||
buf[0] = addr;
|
||||
|
||||
ret = write(_fb, buf, 1);
|
||||
if (ret < 0) {
|
||||
CVI_TRACE_SNS(CVI_DBG_ERR, "I2C_WRITE error!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
buf[0] = 0;
|
||||
buf[1] = 0;
|
||||
ret = read(_fb, buf, 1);
|
||||
if (ret < 0) {
|
||||
CVI_TRACE_SNS(CVI_DBG_ERR, "I2C_READ error!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// pack read back data
|
||||
data = buf[0];
|
||||
|
||||
DEBUG("i2c r 0x%x = 0x%x\n", addr, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
/* mode = OLED_CMD
|
||||
* = OLED_DATA */
|
||||
int oled_write_register(int _fb, uint8_t mode, uint8_t data)
|
||||
{
|
||||
int ret;
|
||||
CVI_U8 buf[2];
|
||||
|
||||
if (_fb < 0)
|
||||
return CVI_SUCCESS;
|
||||
buf[0] = mode;
|
||||
buf[1] = data;
|
||||
|
||||
ret = write(_fb, buf, 2);
|
||||
if (ret < 0) {
|
||||
CVI_TRACE_SNS(CVI_DBG_ERR, "I2C_WRITE error!\n");
|
||||
return CVI_FAILURE;
|
||||
}
|
||||
syslog(LOG_DEBUG, "i2c w 0x%x 0x%x\n", mode, data);
|
||||
return CVI_SUCCESS;
|
||||
}
|
||||
|
||||
// 坐标设置
|
||||
void OLED_Set_Pos(int _fb, uint8_t x, uint8_t y)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0xb0+y);
|
||||
oled_write_register(_fb, OLED_CMD, ((x&0xf0)>>4)|0x10);
|
||||
oled_write_register(_fb, OLED_CMD, (x&0x0f));
|
||||
}
|
||||
|
||||
//开启OLED显示
|
||||
void OLED_Display_On(int _fb)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0X8D);
|
||||
oled_write_register(_fb, OLED_CMD, 0X14);
|
||||
oled_write_register(_fb, OLED_CMD, 0XAF);
|
||||
}
|
||||
|
||||
//关闭OLED显示
|
||||
void OLED_Display_Off(int _fb)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0X8D);
|
||||
oled_write_register(_fb, OLED_CMD, 0X10);
|
||||
oled_write_register(_fb, OLED_CMD, 0XAE);
|
||||
}
|
||||
|
||||
//清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!
|
||||
void OLED_Clear(int _fb)
|
||||
{
|
||||
uint8_t i,n;
|
||||
for(i=0;i<8;i++)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0xb0+i);
|
||||
oled_write_register(_fb, OLED_CMD, 0x00);
|
||||
oled_write_register(_fb, OLED_CMD, 0x10);
|
||||
for(n=0;n<128;n++)oled_write_register(_fb, OLED_DATA, 0x00);
|
||||
} //更新显示
|
||||
}
|
||||
|
||||
//在指定位置显示一个字符,包括部分字符
|
||||
//x:0~127
|
||||
//y:0~63
|
||||
//sizey:选择字体 6x8 8x16
|
||||
void OLED_ShowChar(int _fb, uint8_t x,uint8_t y,uint8_t chr,uint8_t sizey)
|
||||
{
|
||||
uint8_t c=0,sizex=sizey/2;
|
||||
uint16_t i=0,size1;
|
||||
if(sizey==8)size1=6;
|
||||
else size1=(sizey/8+((sizey%8)?1:0))*(sizey/2);
|
||||
c=chr-' ';//得到偏移后的值
|
||||
OLED_Set_Pos(_fb, x, y);
|
||||
for(i=0; i<size1; i++)
|
||||
{
|
||||
if(i%sizex==0&&sizey!=8) OLED_Set_Pos(_fb, x, y++);
|
||||
if(sizey==8) oled_write_register(_fb, OLED_DATA, oled_asc2_0806[c][i]); //6X8字号
|
||||
else if(sizey==16) oled_write_register(_fb, OLED_DATA, oled_asc2_1608[c][i]);//8x16字号
|
||||
else return;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t oled_pow(uint8_t m,uint8_t n)
|
||||
{
|
||||
uint32_t result=1;
|
||||
while(n--)result*=m;
|
||||
return result;
|
||||
}
|
||||
|
||||
//显示数字
|
||||
//x,y :起点坐标
|
||||
//num:要显示的数字
|
||||
//len :数字的位数
|
||||
//sizey:字体大小
|
||||
void OLED_ShowNum(int _fb, uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t sizey)
|
||||
{
|
||||
uint8_t t, temp, m = 0;
|
||||
uint8_t enshow = 0;
|
||||
if(sizey == 8) m = 2;
|
||||
for(t=0; t<len; t++)
|
||||
{
|
||||
temp = (num / oled_pow(10,len-t-1)) % 10;
|
||||
if(enshow == 0 && t < (len-1))
|
||||
{
|
||||
if(temp == 0)
|
||||
{
|
||||
OLED_ShowChar(_fb, x+(sizey/2+m)*t, y, ' ',sizey);
|
||||
continue;
|
||||
}else enshow=1;
|
||||
}
|
||||
OLED_ShowChar(_fb, x+(sizey/2+m)*t, y, temp+'0', sizey);
|
||||
}
|
||||
}
|
||||
|
||||
//显示一个字符号串
|
||||
void OLED_ShowString(int _fb, uint8_t x, uint8_t y, uint8_t *chr, uint8_t sizey)
|
||||
{
|
||||
uint8_t j=0;
|
||||
while (chr[j]!='\0')
|
||||
{
|
||||
OLED_ShowChar(_fb, x, y, chr[j++], sizey);
|
||||
if(sizey==8)x+=6;
|
||||
else x+=sizey/2;
|
||||
}
|
||||
}
|
||||
|
||||
//反显函数
|
||||
void OLED_ColorTurn(int _fb, uint8_t i)
|
||||
{
|
||||
if(i==0)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0xA6); //正常显示
|
||||
}
|
||||
if(i==1)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0xA7);//反色显示
|
||||
}
|
||||
}
|
||||
|
||||
//屏幕旋转180度
|
||||
void OLED_DisplayTurn(int _fb, uint8_t i)
|
||||
{
|
||||
if(i==0)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0xC8);//正常显示
|
||||
oled_write_register(_fb, OLED_CMD, 0xA1);
|
||||
}
|
||||
if(i==1)
|
||||
{
|
||||
oled_write_register(_fb, OLED_CMD, 0xC0);//反转显示
|
||||
oled_write_register(_fb, OLED_CMD, 0xA0);
|
||||
}
|
||||
}
|
||||
|
||||
//初始化
|
||||
void OLED_Init(int _fb)
|
||||
{
|
||||
// OLED_RES_Clr();
|
||||
// delay_ms(200);
|
||||
// OLED_RES_Set();
|
||||
|
||||
oled_write_register(_fb, OLED_CMD, 0xAE);//--turn off oled panel
|
||||
oled_write_register(_fb, OLED_CMD, 0x00);//---set low column address
|
||||
oled_write_register(_fb, OLED_CMD, 0x10);//---set high column address
|
||||
oled_write_register(_fb, OLED_CMD, 0x40);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
|
||||
oled_write_register(_fb, OLED_CMD, 0x81);//--set contrast control register
|
||||
oled_write_register(_fb, OLED_CMD, 0xCF);// Set SEG Output Current Brightness
|
||||
oled_write_register(_fb, OLED_CMD, 0xA1);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
|
||||
oled_write_register(_fb, OLED_CMD, 0xC8);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
|
||||
oled_write_register(_fb, OLED_CMD, 0xA6);//--set normal display
|
||||
oled_write_register(_fb, OLED_CMD, 0xA8);//--set multiplex ratio(1 to 64)
|
||||
oled_write_register(_fb, OLED_CMD, 0x3f);//--1/64 duty
|
||||
oled_write_register(_fb, OLED_CMD, 0xD3);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
|
||||
oled_write_register(_fb, OLED_CMD, 0x00);//-not offset
|
||||
oled_write_register(_fb, OLED_CMD, 0xd5);//--set display clock divide ratio/oscillator frequency
|
||||
oled_write_register(_fb, OLED_CMD, 0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
|
||||
oled_write_register(_fb, OLED_CMD, 0xD9);//--set pre-charge period
|
||||
oled_write_register(_fb, OLED_CMD, 0xF1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
|
||||
oled_write_register(_fb, OLED_CMD, 0xDA);//--set com pins hardware configuration
|
||||
oled_write_register(_fb, OLED_CMD, 0x12);//
|
||||
oled_write_register(_fb, OLED_CMD, 0xDB);//--set vcomh
|
||||
oled_write_register(_fb, OLED_CMD, 0x40);//Set VCOM Deselect Level
|
||||
oled_write_register(_fb, OLED_CMD, 0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
|
||||
oled_write_register(_fb, OLED_CMD, 0x02);//
|
||||
oled_write_register(_fb, OLED_CMD, 0x8D);//--set Charge Pump enable/disable
|
||||
oled_write_register(_fb, OLED_CMD, 0x14);//--set(0x10) disable
|
||||
oled_write_register(_fb, OLED_CMD, 0xA4);// Disable Entire Display On (0xa4/0xa5)
|
||||
oled_write_register(_fb, OLED_CMD, 0xA6);// Disable Inverse Display On (0xa6/a7)
|
||||
OLED_Clear(_fb);
|
||||
oled_write_register(_fb, OLED_CMD, 0xAF); /*display ON*/
|
||||
}
|
||||
|
||||
void OLED_ShowStringtoend(int _fb, uint8_t x, uint8_t y, uint8_t *chr, uint8_t sizey, uint8_t end)
|
||||
{
|
||||
uint8_t j=0;
|
||||
while (chr[j] != end)
|
||||
{
|
||||
OLED_ShowChar(_fb, x, y, chr[j++], sizey);
|
||||
if(sizey==8)x+=6;
|
||||
else x+=sizey/2;
|
||||
}
|
||||
}
|
||||
|
||||
void show_ip_on_oled(uint8_t *chr)
|
||||
{
|
||||
int olde_fb;
|
||||
if(oled_i2c_init(OLED_ENABLE, &olde_fb) < 0){
|
||||
printf("I2C_SLAVE_FORCE error!!\n");
|
||||
return;
|
||||
}
|
||||
OLED_Init(olde_fb);
|
||||
OLED_ColorTurn(olde_fb, 0); //0正常显示 1 反色显示
|
||||
OLED_DisplayTurn(olde_fb, 0); //0正常显示 1 屏幕翻转显示
|
||||
OLED_Clear(olde_fb);
|
||||
OLED_ShowString(olde_fb, 4, 1, "rtsp://", 16);
|
||||
OLED_ShowStringtoend(olde_fb, 4, 3, chr+7, 16, ':');
|
||||
OLED_ShowString(olde_fb, 4, 5, ":8554/live", 16);
|
||||
oled_i2c_init(OLED_DISABLE, &olde_fb);
|
||||
}
|
||||
|
||||
void close_oled()
|
||||
{
|
||||
int olde_fb;
|
||||
if(oled_i2c_init(OLED_ENABLE, &olde_fb) < 0){
|
||||
printf("I2C_SLAVE_FORCE error!!\n");
|
||||
return;
|
||||
}
|
||||
OLED_Init(olde_fb);
|
||||
OLED_ColorTurn(olde_fb, 0); //0正常显示 1 反色显示
|
||||
OLED_DisplayTurn(olde_fb, 0); //0正常显示 1 屏幕翻转显示
|
||||
OLED_Clear(olde_fb);
|
||||
oled_i2c_init(OLED_DISABLE, &olde_fb);
|
||||
}
|
||||
|
||||
static int save_buff_to_file(char *filename, uint8_t *filebuf, uint32_t filebuf_len)
|
||||
{
|
||||
int fd = -1;
|
||||
@@ -2408,6 +2710,7 @@ static int _test_vi_region_venc_h265_rtsp(void)
|
||||
}
|
||||
close(fd);
|
||||
|
||||
show_ip_on_oled(ipdata);
|
||||
|
||||
uint64_t start = _get_time_us();
|
||||
uint64_t last_loop_us = start;
|
||||
@@ -2559,6 +2862,16 @@ _exit:
|
||||
if (0 != mmf_deinit()) {
|
||||
printf("mmf deinit\n");
|
||||
}
|
||||
close_oled();
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static int _test_i2c_oled(void)
|
||||
{
|
||||
uint8_t * chat_str = "rtsp://xxx.xxx.xxx.xxx:8554/live";
|
||||
|
||||
show_ip_on_oled(chat_str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2638,3 +2951,8 @@ int test_vi_region_venc_h265_rtsp(void)
|
||||
{
|
||||
return _test_vi_region_venc_h265_rtsp();
|
||||
}
|
||||
|
||||
int test_i2c_oled(void)
|
||||
{
|
||||
return _test_i2c_oled();
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ void SAMPLE_VIO_Usage(char *sPrgNm)
|
||||
printf("\t 10) test vi venc h265 rtsp.\n");
|
||||
printf("\t 11) test multiple vi.\n");
|
||||
printf("\t 12) test vi venc region h265 rtsp.\n");
|
||||
printf("\t 13) test i2c oled.\n");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
@@ -75,6 +76,7 @@ int main(int argc, char *argv[])
|
||||
extern int test_vi_venc_h265_rtsp(void);
|
||||
extern int test_multiple_vi(void);
|
||||
extern int test_vi_region_venc_h265_rtsp(void);
|
||||
extern int test_i2c_oled(void);
|
||||
|
||||
test_pre_init();
|
||||
|
||||
@@ -119,6 +121,9 @@ int main(int argc, char *argv[])
|
||||
case 12:
|
||||
s32Ret = test_vi_region_venc_h265_rtsp();
|
||||
break;
|
||||
case 13:
|
||||
s32Ret = test_i2c_oled();
|
||||
break;
|
||||
default:
|
||||
SAMPLE_PRT("the index %d is invaild!\n", s32Index);
|
||||
SAMPLE_VIO_Usage(argv[0]);
|
||||
|
||||
Reference in New Issue
Block a user