diff --git a/br-ext-chip-hisilicon/Config.in b/br-ext-chip-hisilicon/Config.in index 10e0dd2a..3652a8ab 100644 --- a/br-ext-chip-hisilicon/Config.in +++ b/br-ext-chip-hisilicon/Config.in @@ -1,6 +1,7 @@ source "$BR2_EXTERNAL_HISILICON_PATH/linux/Config.ext.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/hisi_patcher/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/gdbserver-lite/Config.in" +source "$BR2_EXTERNAL_HISILICON_PATH/package/aura-httpd/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/hisi_gpio_scanner/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/hisilicon-osdrv4/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/fwprintenv-ng/Config.in" diff --git a/br-ext-chip-hisilicon/external.mk b/br-ext-chip-hisilicon/external.mk index 1055d4ef..817a36ed 100644 --- a/br-ext-chip-hisilicon/external.mk +++ b/br-ext-chip-hisilicon/external.mk @@ -1,5 +1,6 @@ include $(BR2_EXTERNAL_HISILICON_PATH)/linux/linux-ext-hisi_patcher.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/hisi_patcher/hisi_patcher.mk +include $(BR2_EXTERNAL_HISILICON_PATH)/package/aura-httpd/aura-httpd.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/gdbserver-lite/gdbserver-lite.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/fwprintenv-ng/fwprintenv-ng.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/hisi_gpio_scanner/hisi_gpio_scanner.mk diff --git a/br-ext-chip-hisilicon/package/aura-httpd b/br-ext-chip-hisilicon/package/aura-httpd new file mode 120000 index 00000000..e7e090ee --- /dev/null +++ b/br-ext-chip-hisilicon/package/aura-httpd @@ -0,0 +1 @@ +../../general/package/aura-httpd \ No newline at end of file diff --git a/br-ext-chip-sigmastar/Config.in b/br-ext-chip-sigmastar/Config.in index 04964218..7c41032f 100644 --- a/br-ext-chip-sigmastar/Config.in +++ b/br-ext-chip-sigmastar/Config.in @@ -1,9 +1,10 @@ source "$BR2_EXTERNAL_SIGMASTAR_PATH/linux/Config.ext.in" source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/sigmastar_patcher/Config.in" -source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/sigmastar-osdrv-ssc335/Config.in" +source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/aura-httpd/Config.in" source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/fwprintenv-ng/Config.in" source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/ipctool/Config.in" source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/libevent-mini/Config.in" source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/node-exporter/Config.in" +source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/sigmastar-osdrv-ssc335/Config.in" source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/vtund-lite/Config.in" source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/yaml-cli/Config.in" \ No newline at end of file diff --git a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_dev_defconfig b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_dev_defconfig index 8a9e8742..891a5bb1 100644 --- a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_dev_defconfig +++ b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_dev_defconfig @@ -60,8 +60,8 @@ BR2_PACKAGE_FWPRINTENV_NG=y BR2_PACKAGE_HASERL=y BR2_PACKAGE_IPCTOOL=y BR2_PACKAGE_JSON_C=y -BR2_PACKAGE_LAME=y -BR2_PACKAGE_LIBEVENT_MINI=y +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBEVENT_MINI is not set BR2_PACKAGE_LIBYAML=y # BR2_PACKAGE_MAJESTIC is not set BR2_PACKAGE_MINI_SNMPD=y diff --git a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_goodcam_defconfig b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_goodcam_defconfig index 97a5d342..2f5c8d30 100644 --- a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_goodcam_defconfig +++ b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_goodcam_defconfig @@ -53,8 +53,8 @@ BR2_PACKAGE_FWPRINTENV_NG=y BR2_PACKAGE_HASERL=y BR2_PACKAGE_IPCTOOL=y BR2_PACKAGE_JSON_C=y -BR2_PACKAGE_LAME=y -BR2_PACKAGE_LIBEVENT_MINI=y +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBEVENT_MINI is not set BR2_PACKAGE_LIBYAML=y # BR2_PACKAGE_MAJESTIC is not set BR2_PACKAGE_MINI_SNMPD=y diff --git a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig index 4619b1d2..433a852e 100644 --- a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig +++ b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig @@ -51,8 +51,8 @@ BR2_PACKAGE_FWPRINTENV_NG=y BR2_PACKAGE_HASERL=y BR2_PACKAGE_IPCTOOL=y BR2_PACKAGE_JSON_C=y -BR2_PACKAGE_LAME=y -BR2_PACKAGE_LIBEVENT_MINI=y +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBEVENT_MINI is not set BR2_PACKAGE_LIBYAML=y # BR2_PACKAGE_MAJESTIC is not set BR2_PACKAGE_MINI_SNMPD=y diff --git a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_rotek_defconfig b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_rotek_defconfig index 8766fce6..60cebf47 100644 --- a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_rotek_defconfig +++ b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_rotek_defconfig @@ -52,8 +52,8 @@ BR2_PACKAGE_FWPRINTENV_NG=y BR2_PACKAGE_HASERL=y BR2_PACKAGE_IPCTOOL=y BR2_PACKAGE_JSON_C=y -BR2_PACKAGE_LAME=y -BR2_PACKAGE_LIBEVENT_MINI=y +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBEVENT_MINI is not set BR2_PACKAGE_LIBYAML=y # BR2_PACKAGE_MAJESTIC is not set BR2_PACKAGE_MINI_SNMPD=y diff --git a/br-ext-chip-sigmastar/external.mk b/br-ext-chip-sigmastar/external.mk index 7c429ad2..a4112f4e 100644 --- a/br-ext-chip-sigmastar/external.mk +++ b/br-ext-chip-sigmastar/external.mk @@ -1,9 +1,10 @@ include $(BR2_EXTERNAL_SIGMASTAR_PATH)/linux/linux-ext-sigmastar_patcher.mk include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar_patcher/sigmastar_patcher.mk -include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk +include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/aura-httpd/aura-httpd.mk include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/fwprintenv-ng/fwprintenv-ng.mk include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/ipctool/ipctool.mk include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/libevent-mini/libevent-mini.mk include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/node-exporter/node-exporter.mk +include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/vtund-lite/vtund-lite.mk include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/yaml-cli/yaml-cli.mk \ No newline at end of file diff --git a/br-ext-chip-sigmastar/package/aura-httpd b/br-ext-chip-sigmastar/package/aura-httpd new file mode 120000 index 00000000..e7e090ee --- /dev/null +++ b/br-ext-chip-sigmastar/package/aura-httpd @@ -0,0 +1 @@ +../../general/package/aura-httpd \ No newline at end of file diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sample/test_venc/Makefile b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sample/test_venc/Makefile new file mode 100644 index 00000000..39be6e92 --- /dev/null +++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sample/test_venc/Makefile @@ -0,0 +1,30 @@ + +TOP=$(shell pwd) + +GNU_TARGET := arm-buildroot-linux-uclibcgnueabihf +#GNU_TARGET := arm-openipc-linux-uclibcgnueabihf +CC := $(GNU_TARGET)-gcc + +#LIBS_PATH = sstar-libs/ipc/i6b0/common/uclibc/4.9.4/ +#INCLUDE_PATH = sstar-libs/include + +LIBS_PATH = $(TOP)/sstar-libs +INCLUDE_PATH = $(TOP)/sstar-libs/include + +CFLAGS := -I$(INCLUDE_PATH) +LINK_FLAGS := -L$(LIBS_PATH)/mi_libs/dynamic -L$(LIBS_PATH)/ex_libs/static +LIBS := -lmi_sys -lmi_sensor -lmi_vif -lmi_vpe -lmi_isp -lcus3a -lispalgo -lmi_venc -Wl,-Bstatic -Wl,--whole-archive -lcam_os_wrapper -Wl,--no-whole-archive -Wl,-Bdynamic + +all: test_venc_ssc335 + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + +test_venc_ssc335: test_venc_ssc335.o + $(CC) test_venc_ssc335.o -o $@ $(LINK_FLAGS) $(LIBS) + +clean: + -rm -f *.o + -rm -f test_venc_ssc335 + +.PHONY: all clean \ No newline at end of file diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sample/test_venc/test_venc_ssc335.c b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sample/test_venc/test_venc_ssc335.c new file mode 100644 index 00000000..c5a83e73 --- /dev/null +++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sample/test_venc/test_venc_ssc335.c @@ -0,0 +1,742 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#define GCI_SENSOR_PAD E_MI_VIF_SNRPAD_ID_0 +#define GCI_PIXEL_FORMAT E_MI_SYS_PIXEL_FRAME_YUV_SEMIPLANAR_420 +// #define GCI_VIF_WORK_MODE E_MI_VIF_WORK_MODE_RGB_FRAMEMODE +#define GCI_VIF_WORK_MODE E_MI_VIF_WORK_MODE_RGB_REALTIME + +/// Initialize the MPI. +int32_t gci_sys_init(void) { + // make sure that we're starting with a clean table + MI_SYS_Exit(); + + return MI_SYS_Init(); +} + +/// Release the MPI resources. +int32_t gci_sys_exit(void) { + return MI_SYS_Exit(); +} + +/// Initialize the sensor. +int32_t gci_snr_init(uint8_t hdr, uint32_t resolution_id) { + MI_S32 ret; + + MI_SNR_Disable(GCI_SENSOR_PAD); + + if ((ret = MI_SNR_SetPlaneMode(GCI_SENSOR_PAD, hdr ? TRUE : FALSE)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_SNR_SetRes(GCI_SENSOR_PAD, resolution_id)) != MI_SUCCESS) { + return ret; + } + + return MI_SNR_Enable(GCI_SENSOR_PAD); +} + +/// Deinitialize the sensor. +int32_t gci_snr_deinit(void) { + return MI_SNR_Disable(GCI_SENSOR_PAD); +} + +/// Find the highest resolution offering at least a given FPS. +int32_t gci_snr_get_max_resolution(uint32_t fps, uint32_t* resolution_id) { + MI_U32 count, i, current_res, max_res, max_res_index, max_res_found; + MI_SNR_Res_t res; + MI_S32 ret; + + if ((ret = MI_SNR_QueryResCount(GCI_SENSOR_PAD, &count)) != MI_SUCCESS) { + return ret; + } + + max_res = 0; + max_res_found = 0; + + for (i = 0; i < count; i++) { + if ((ret = MI_SNR_GetRes(GCI_SENSOR_PAD, i, &res)) != MI_SUCCESS) { + return ret; + } + + current_res = res.stOutputSize.u16Width * res.stOutputSize.u16Height; + + if (res.u32MaxFps < fps) { + continue; + } else if (max_res_found) { + if (current_res > max_res) { + max_res = current_res; + max_res_index = i; + } + } else { + max_res = current_res; + max_res_index = i; + max_res_found = 1; + } + } + + if (max_res_found) { + *resolution_id = max_res_index; + } + + return max_res_found ? MI_SUCCESS : MI_ERR_SNR_INVALID_PARA; +} + +/// Get the maximum available FPS. +int32_t gci_snr_get_max_fps(uint32_t* fps) { + MI_U32 count, i, max_fps; + MI_SNR_Res_t res; + MI_S32 ret; + + if ((ret = MI_SNR_QueryResCount(GCI_SENSOR_PAD, &count)) != MI_SUCCESS) { + return ret; + } + + max_fps = 0; + + for (i = 0; i < count; i++) { + if ((ret = MI_SNR_GetRes(GCI_SENSOR_PAD, i, &res)) != MI_SUCCESS) { + return ret; + } + + if (res.u32MaxFps > max_fps) { + max_fps = res.u32MaxFps; + } + } + + *fps = max_fps; + + return MI_SUCCESS; +} + +/// Get current FPS. +int32_t gci_snr_get_fps(uint32_t* fps) { + MI_SNR_Res_t res; + MI_U8 index; + MI_S32 ret; + + if ((ret = MI_SNR_GetCurRes(GCI_SENSOR_PAD, &index, &res)) != MI_SUCCESS) { + return ret; + } + + *fps = res.u32MaxFps; + + return MI_SUCCESS; +} + +/// Initialize the video input device. +/// +/// The sensor must be already initialized at this point. +static int32_t gci_vif_init_dev(void) { + MI_SNR_PADInfo_t pad_info; + MI_VIF_DevAttr_t dev_attrs; + MI_S32 ret; + + if ((ret = MI_SNR_GetPadInfo(GCI_SENSOR_PAD, &pad_info)) != MI_SUCCESS) { + return ret; + } + + memset(&dev_attrs, 0, sizeof(dev_attrs)); + + dev_attrs.eIntfMode = pad_info.eIntfMode; + dev_attrs.eWorkMode = GCI_VIF_WORK_MODE; + dev_attrs.eHDRType = E_MI_VIF_HDR_TYPE_OFF; + + if( dev_attrs.eIntfMode == E_MI_VIF_MODE_BT656) { + dev_attrs.eClkEdge = pad_info.unIntfAttr.stBt656Attr.eClkEdge; + } else { + dev_attrs.eClkEdge = E_MI_VIF_CLK_EDGE_DOUBLE; + } + + if (dev_attrs.eIntfMode == E_MI_VIF_MODE_MIPI) { + dev_attrs.eDataSeq = pad_info.unIntfAttr.stMipiAttr.eDataYUVOrder; + } else { + dev_attrs.eDataSeq = E_MI_VIF_INPUT_DATA_YUYV; + } + + if (dev_attrs.eIntfMode == E_MI_VIF_MODE_BT656) { + memcpy( + &dev_attrs.stSyncAttr, + &pad_info.unIntfAttr.stBt656Attr.stSyncAttr, + sizeof(MI_VIF_SyncAttr_t)); + } + + dev_attrs.eBitOrder = E_MI_VIF_BITORDER_NORMAL; + + if ((ret = MI_VIF_SetDevAttr(0, &dev_attrs)) != MI_SUCCESS) { + return ret; + } + + return MI_VIF_EnableDev(0); +} + +/// Initialize the video input channel-port. +/// +/// The video input device must be already initialized at this point. +static int32_t gci_vif_init_channel_port(void) { + MI_SNR_PADInfo_t pad_info; + MI_SNR_PlaneInfo_t plane_info; + MI_VIF_ChnPortAttr_t port_attrs; + MI_S32 ret; + + if ((ret = MI_SNR_GetPadInfo(GCI_SENSOR_PAD, &pad_info)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_SNR_GetPlaneInfo(GCI_SENSOR_PAD, 0, &plane_info)) != MI_SUCCESS) { + return ret; + } + + memset(&port_attrs, 0, sizeof(port_attrs)); + + port_attrs.stCapRect.u16X = plane_info.stCapRect.u16X; + port_attrs.stCapRect.u16Y = plane_info.stCapRect.u16Y; + port_attrs.stCapRect.u16Width = plane_info.stCapRect.u16Width; + port_attrs.stCapRect.u16Height = plane_info.stCapRect.u16Height; + port_attrs.stDestSize.u16Width = plane_info.stCapRect.u16Width; + port_attrs.stDestSize.u16Height = plane_info.stCapRect.u16Height; + port_attrs.ePixFormat = (MI_SYS_PixelFormat_e)RGB_BAYER_PIXEL( + plane_info.ePixPrecision, + plane_info.eBayerId); + + if (pad_info.eIntfMode == E_MI_VIF_MODE_BT656) { + port_attrs.eFrameRate = E_MI_VIF_FRAMERATE_FULL; + port_attrs.eCapSel = E_MI_SYS_FIELDTYPE_BOTH; + port_attrs.eScanMode = E_MI_SYS_FRAME_SCAN_MODE_PROGRESSIVE; + } + + if ((ret = MI_VIF_SetChnPortAttr(0, 0, &port_attrs)) != MI_SUCCESS) { + return ret; + } + + return MI_VIF_EnableChnPort(0, 0); +} + +/// Initialize the video input. +int32_t gci_vif_init(void) { + MI_U32 resolution; + MI_U32 fps; + MI_S32 ret; + + if ((ret = gci_snr_get_max_fps(&fps)) != MI_SUCCESS) { + return ret; + } + + // cap the FPS to 30 for querying the max resolution + if (fps > 30) { + fps = 30; + } + + if ((ret = gci_snr_get_max_resolution(fps, &resolution)) != MI_SUCCESS) { + return ret; + } + + if ((ret = gci_snr_init(0, resolution)) != MI_SUCCESS) { + return ret; + } + + MI_VIF_DisableDev(0); + + if ((ret = gci_vif_init_dev()) != MI_SUCCESS) { + goto dev_init_err; + } + + if ((ret = gci_vif_init_channel_port()) != MI_SUCCESS) { + goto channel_port_init_err; + } + + return MI_SUCCESS; + +channel_port_init_err: + MI_VIF_DisableDev(0); + +dev_init_err: + gci_snr_deinit(); + + return ret; +} + +/// Deinitialize the video input. +int32_t gci_vif_deinit(void) { + MI_S32 ret; + + if ((ret = MI_VIF_DisableChnPort(0, 0)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VIF_DisableDev(0)) != MI_SUCCESS) { + return ret; + } + + return gci_snr_deinit(); +} + +/// Get VPE channel attributes. +static int32_t gci_vpe_get_channel_attrs(MI_VPE_ChannelAttr_t* attrs) { + MI_VIF_DevAttr_t vif_dev_attrs; + MI_VIF_ChnPortAttr_t vif_port_attrs; + MI_S32 ret; + + if ((ret = MI_VIF_GetDevAttr(0, &vif_dev_attrs)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VIF_GetChnPortAttr(0, 0, &vif_port_attrs)) != MI_SUCCESS) { + return ret; + } + + memset(attrs, 0, sizeof(MI_VPE_ChannelAttr_t)); + + attrs->eRunningMode = vif_dev_attrs.eWorkMode == E_MI_VIF_WORK_MODE_RGB_REALTIME + ? E_MI_VPE_RUN_REALTIME_MODE + : E_MI_VPE_RUN_CAM_MODE; + attrs->eHDRType = E_MI_VPE_HDR_TYPE_OFF; + attrs->ePixFmt = vif_port_attrs.ePixFormat; + attrs->u16MaxW = vif_port_attrs.stDestSize.u16Width; + attrs->u16MaxH = vif_port_attrs.stDestSize.u16Height; + attrs->bNrEn = FALSE; + attrs->bEsEn = FALSE; + attrs->bEdgeEn = FALSE; + attrs->bUvInvert = FALSE; + attrs->bContrastEn = FALSE; + attrs->eSensorBindId = E_MI_VPE_SENSOR0; + + return MI_SUCCESS; +} + +/// Get VPE port mode. +static int32_t gci_vpe_get_port_mode(MI_VPE_PortMode_t* mode) { + MI_VPE_ChannelAttr_t attrs; + MI_S32 ret; + + if ((ret = MI_VPE_GetChannelAttr(0, &attrs)) != MI_SUCCESS) { + return ret; + } + + memset(mode, 0, sizeof(MI_VPE_PortMode_t)); + + mode->u16Width = attrs.u16MaxW; + mode->u16Height = attrs.u16MaxH; + mode->ePixelFormat = GCI_PIXEL_FORMAT; + mode->eCompressMode = E_MI_SYS_COMPRESS_MODE_NONE; + + return MI_SUCCESS; +} + +/// Bind VPE and VIF. +static int32_t gci_vpe_bind_channel(void) { + MI_VIF_DevAttr_t vif_dev_attrs; + MI_SYS_ChnPort_t vif_output_port; + MI_SYS_ChnPort_t vpe_input_port; + MI_U32 frame_rate; + MI_S32 ret; + + if ((ret = gci_snr_get_fps(&frame_rate)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VIF_GetDevAttr(0, &vif_dev_attrs)) != MI_SUCCESS) { + return ret; + } + + memset(&vif_output_port, 0, sizeof(vif_output_port)); + memset(&vpe_input_port, 0, sizeof(vpe_input_port)); + + vif_output_port.eModId = E_MI_MODULE_ID_VIF; + vif_output_port.u32DevId = 0; + vif_output_port.u32ChnId = 0; + vif_output_port.u32PortId = 0; + + vpe_input_port.eModId = E_MI_MODULE_ID_VPE; + vpe_input_port.u32DevId = 0; + vpe_input_port.u32ChnId = 0; + vpe_input_port.u32PortId = 0; + + return MI_SYS_BindChnPort2( + &vif_output_port, + &vpe_input_port, + frame_rate, + frame_rate, + vif_dev_attrs.eWorkMode == E_MI_VIF_WORK_MODE_RGB_REALTIME + ? E_MI_SYS_BIND_TYPE_REALTIME + : E_MI_SYS_BIND_TYPE_FRAME_BASE, + 0); +} + +/// Unbind VPE and VIF. +static int32_t gci_vpe_unbind_channel(void) { + MI_SYS_ChnPort_t vif_output_port; + MI_SYS_ChnPort_t vpe_input_port; + + memset(&vif_output_port, 0, sizeof(vif_output_port)); + memset(&vpe_input_port, 0, sizeof(vpe_input_port)); + + vif_output_port.eModId = E_MI_MODULE_ID_VIF; + vif_output_port.u32DevId = 0; + vif_output_port.u32ChnId = 0; + vif_output_port.u32PortId = 0; + + vpe_input_port.eModId = E_MI_MODULE_ID_VPE; + vpe_input_port.u32DevId = 0; + vpe_input_port.u32ChnId = 0; + vpe_input_port.u32PortId = 0; + + return MI_SYS_UnBindChnPort(&vif_output_port, &vpe_input_port); +} + +/// Initialize the Video Processing Engine. +int32_t gci_vpe_init(void) { + MI_VPE_ChannelAttr_t channel_attrs; + MI_VPE_PortMode_t port_mode; + MI_S32 ret; + + if ((ret = gci_vpe_get_channel_attrs(&channel_attrs)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VPE_CreateChannel(0, &channel_attrs)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VPE_StartChannel(0)) != MI_SUCCESS) { + goto destroy_channel; + } + + if ((ret = gci_vpe_bind_channel()) != MI_SUCCESS) { + goto stop_channel; + } + + if ((ret = gci_vpe_get_port_mode(&port_mode)) != MI_SUCCESS) { + goto unbind_channel; + } + + if ((ret = MI_VPE_SetPortMode(0, 0, &port_mode)) != MI_SUCCESS) { + goto unbind_channel; + } + + if ((ret = MI_VPE_EnablePort(0, 0)) != MI_SUCCESS) { + goto unbind_channel; + } + + return MI_SUCCESS; + +unbind_channel: + gci_vpe_unbind_channel(); + +stop_channel: + MI_VPE_StopChannel(0); + +destroy_channel: + MI_VPE_DestroyChannel(0); + + return ret; +} + +/// Deinitialize the Video Processing Engine. +int32_t gci_vpe_deinit(void) { + MI_S32 ret; + + if ((ret = MI_VPE_DisablePort(0, 0)) != MI_SUCCESS) { + return ret; + } + + if ((ret = gci_vpe_unbind_channel()) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VPE_StopChannel(0)) != MI_SUCCESS) { + return ret; + } + + return MI_VPE_DestroyChannel(0); +} + +/// Create an MJPEG encoding channel. +static int32_t gci_venc_init_mjpeg(void) { + MI_VPE_ChannelAttr_t vpe_attrs; + MI_VENC_ChnAttr_t attrs; + MI_S32 ret; + + if ((ret = MI_VPE_GetChannelAttr(0, &vpe_attrs)) != MI_SUCCESS) { + return ret; + } + + memset(&attrs, 0, sizeof(attrs)); + + attrs.stVeAttr.eType = E_MI_VENC_MODTYPE_JPEGE; + attrs.stVeAttr.stAttrJpeg.u32MaxPicWidth = vpe_attrs.u16MaxW; + attrs.stVeAttr.stAttrJpeg.u32MaxPicHeight = vpe_attrs.u16MaxH; + attrs.stVeAttr.stAttrJpeg.u32PicWidth = vpe_attrs.u16MaxW; + attrs.stVeAttr.stAttrJpeg.u32PicHeight = vpe_attrs.u16MaxH; + attrs.stVeAttr.stAttrJpeg.bByFrame = TRUE; + attrs.stRcAttr.eRcMode = E_MI_VENC_RC_MODE_MJPEGCBR; + attrs.stRcAttr.stAttrMjpegCbr.u32SrcFrmRateNum = 30; + attrs.stRcAttr.stAttrMjpegCbr.u32SrcFrmRateDen = 1; + attrs.stRcAttr.stAttrMjpegCbr.u32BitRate = 4000000; + + return MI_VENC_CreateChn(0, &attrs); +} + +/// Bind a given VENC channel to the VPE. +static int32_t gci_venc_bind_channel(uint32_t dst_frame_rate) { + MI_SYS_ChnPort_t vpe_output_port; + MI_SYS_ChnPort_t venc_input_port; + MI_U32 src_frame_rate; + MI_U32 venc_dev; + MI_S32 ret; + + if ((ret = gci_snr_get_fps(&src_frame_rate)) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VENC_GetChnDevid(0, &venc_dev)) != MI_SUCCESS) { + return ret; + } + + memset(&vpe_output_port, 0, sizeof(vpe_output_port)); + memset(&venc_input_port, 0, sizeof(venc_input_port)); + + vpe_output_port.eModId = E_MI_MODULE_ID_VPE; + vpe_output_port.u32DevId = 0; + vpe_output_port.u32ChnId = 0; + vpe_output_port.u32PortId = 0; + + venc_input_port.eModId = E_MI_MODULE_ID_VENC; + venc_input_port.u32DevId = venc_dev; + venc_input_port.u32ChnId = 0; + venc_input_port.u32PortId = 0; + + return MI_SYS_BindChnPort2( + &vpe_output_port, + &venc_input_port, + src_frame_rate, + dst_frame_rate, + E_MI_SYS_BIND_TYPE_FRAME_BASE, + 0); +} + +/// Unbind a given VENC channel. +static int32_t gci_venc_unbind_channel() { + MI_SYS_ChnPort_t vpe_output_port; + MI_SYS_ChnPort_t venc_input_port; + MI_U32 venc_dev; + MI_S32 ret; + + if ((ret = MI_VENC_GetChnDevid(0, &venc_dev)) != MI_SUCCESS) { + return ret; + } + + memset(&vpe_output_port, 0, sizeof(vpe_output_port)); + memset(&venc_input_port, 0, sizeof(venc_input_port)); + + vpe_output_port.eModId = E_MI_MODULE_ID_VPE; + vpe_output_port.u32DevId = 0; + vpe_output_port.u32ChnId = 0; + vpe_output_port.u32PortId = 0; + + venc_input_port.eModId = E_MI_MODULE_ID_VENC; + venc_input_port.u32DevId = venc_dev; + venc_input_port.u32ChnId = 0; + venc_input_port.u32PortId = 0; + + return MI_SYS_UnBindChnPort(&vpe_output_port, &venc_input_port); +} + +/// Initialize an encoder channel and bind it to VPE. +int32_t gci_venc_init(void) { + MI_U32 frame_rate; + MI_S32 ret; + + if ((ret = gci_venc_init_mjpeg()) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VENC_StartRecvPic(0)) != MI_SUCCESS) { + goto destroy_channel; + } + + if ((ret = gci_venc_bind_channel(2)) != MI_SUCCESS) { + goto stop_channel; + } + + return MI_SUCCESS; + +stop_channel: + MI_VENC_StopRecvPic(0); + +destroy_channel: + MI_VENC_DestroyChn(0); + + return ret; +} + +/// Deinitialize a given encoder channel. +int32_t gci_venc_deinit(void) { + MI_S32 ret; + + if ((ret = gci_venc_unbind_channel()) != MI_SUCCESS) { + return ret; + } + + if ((ret = MI_VENC_StopRecvPic(0)) != MI_SUCCESS) { + return ret; + } + + return MI_VENC_DestroyChn(0); +} + +static int32_t poll_fd(int32_t fd, int timeout) { + struct pollfd fds; + int ret; + + fds.fd = fd; + fds.events = POLLIN; + + ret = poll(&fds, 1, timeout); + + if (ret == 0) { + return ETIMEDOUT; + } else if (ret < 0) { + return errno; + } + + return 0; +} + +static int32_t read_venc_frame(void) { + MI_VENC_ChnStat_t stat; + MI_VENC_Stream_t stream; + MI_VENC_Pack_t* packet; + MI_S32 ret; + MI_U32 i; + MI_S32 fd; + FILE* fout; + + if ((fout = fopen("snapshot.jpg", "wb")) == NULL) { + printf(" unable to open output file\n"); + } + + fd = MI_VENC_GetFd(0); + + printf(" waiting for a frame...\n"); + ret = poll_fd(fd, 2000); + if (ret == ETIMEDOUT) { + printf(" no frame received in 2000ms\n"); + return MI_SUCCESS; + } else if (ret != 0) { + printf(" poll error\n"); + return MI_SUCCESS; + } + + if ((ret = MI_VENC_Query(0, &stat)) != MI_SUCCESS) { + return ret; + } + + if (stat.u32CurPacks == 0) { + return MI_SUCCESS; + } + + memset(&stream, 0, sizeof(stream)); + + stream.u32PackCount = stat.u32CurPacks; + stream.pstPack = malloc(sizeof(MI_VENC_Pack_t) * stat.u32CurPacks); + + if (!stream.pstPack) { + return MI_ERR_VENC_NOMEM; + } + + if ((ret = MI_VENC_GetStream(0, &stream, 0)) != MI_SUCCESS) { + goto end; + } + + + if (stream.u32PackCount) { + printf(" frame #%u\n", stream.u32Seq); + printf(" frame pts: %llu\n", stream.pstPack[0].u64PTS); + printf(" packets: %u\n", stream.u32PackCount); + } + + for (i = 0; i < stream.u32PackCount; i++) { + packet = &stream.pstPack[i]; + + printf(" packet #%u size: %u\n", i, packet->u32Len - packet->u32Offset); + fwrite(packet->pu8Addr + packet->u32Offset, 1, packet->u32Len - packet->u32Offset, fout); + } + + ret = MI_VENC_ReleaseStream(0, &stream); + +end: + free(stream.pstPack); + fclose(fout); + + return ret; +} + +int main(void) { + MI_S32 ret; + MI_U32 i; + + printf("initializing...\n"); + if ((ret = gci_sys_init()) != MI_SUCCESS) { + goto end; + } + printf(" ok\n"); + + printf("initializing video input...\n"); + if ((ret = gci_vif_init()) != MI_SUCCESS) { + goto deinit_sys; + } + printf(" ok\n"); + + printf("initializing video processing engine...\n"); + if ((ret = gci_vpe_init()) != MI_SUCCESS) { + goto deinit_vif; + } + printf(" ok\n"); + + printf("initializing video encoder...\n"); + if ((ret = gci_venc_init()) != MI_SUCCESS) { + goto deinit_vpe; + } + printf(" ok\n"); + + // let's read a few frames to give AE and AWB some time to adjust to the + // scene + for (i = 0; i < 20; i++) { + printf("reading a frame...\n"); + if ((ret = read_venc_frame()) != MI_SUCCESS) { + goto deinit_venc; + } + printf(" ok\n"); + } + +deinit_venc: + gci_venc_deinit(); + +deinit_vpe: + gci_vpe_deinit(); + +deinit_vif: + gci_vif_deinit(); + +deinit_sys: + gci_sys_exit(); + +end: + if (ret != MI_SUCCESS) { + printf(" error: %x\n", ret); + } + + return ret == MI_SUCCESS ? 0 : 1; +} diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/S99sigmastar b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/S99sigmastar new file mode 100755 index 00000000..393f3807 --- /dev/null +++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/S99sigmastar @@ -0,0 +1,58 @@ +#!/bin/sh + +DAEMON="majestic" +PIDFILE="/var/run/$DAEMON.pid" + +MAJESTIC_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# The majestic does not create a pidfile, and use "-m" to instruct start-stop-daemon to create one. +start() { + logger -s -p daemon.info -t sigmastar "Loading of kernel modules and initialization of the video system has started" + export TZ=$(cat /etc/TZ) + load_sigmastar -i + # + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ + -- $MAJESTIC_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level.sh b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level.sh rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_modules.sh b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_sigmastar similarity index 88% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_modules.sh rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_sigmastar index 5d976d3d..2b7d64dc 100755 --- a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_modules.sh +++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_sigmastar @@ -39,16 +39,16 @@ insert_ko() echo hvsp2 down /config/iqfile/filter.txt /config/iqfile/filter.txt > /sys/class/mstar/mscl/hvsp # # Change configs folder - # echo isproot /config/iqfile > /dev/ispmid + echo isproot /etc/sensor/iqfile > /dev/ispmid # # imx307 - # insmod ${PATH_MODULE}/imx307_MIPI.ko chmap=1 lane_num=2 hdr_lane_num=2 + # insmod ${PATH_MODULE}/sensor_imx307_mipi.ko chmap=1 lane_num=2 hdr_lane_num=2 # # gc2053 - # insmod ${PATH_MODULE}/gc2053_MIPI.ko chmap=1 + # insmod ${PATH_MODULE}/sensor_gc2053_mipi.ko chmap=1 # # sc3335 - # insmod ${PATH_MODULE}/sc3335_MIPI.ko chmap=1 + # insmod ${PATH_MODULE}/sensor_sc3335_mipi.ko chmap=1 # mdev -s } diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api.bin b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api.bin similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api.bin rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api.bin diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api.xml b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api.xml similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api.xml rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api.xml diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api_hdr.bin b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api_hdr.bin similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api_hdr.bin rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api_hdr.bin diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api_hdr.xml b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api_hdr.xml similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_api_hdr.xml rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_api_hdr.xml diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_iqfile.bin b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_iqfile.bin similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_iqfile.bin rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_iqfile.bin diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/isp_api.xml b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/isp_api.xml similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/isp_api.xml rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/isp_api.xml diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/ps5250/ps5250_api.bin b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/ps5250_api.bin similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/ps5250/ps5250_api.bin rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/ps5250_api.bin diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/ps5250/ps5250_api.xml b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/ps5250_api.xml similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/ps5250/ps5250_api.xml rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/ps5250_api.xml diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/ps5250/ps5250_iqfile.bin b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/ps5250_iqfile.bin similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/ps5250/ps5250_iqfile.bin rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/ps5250_iqfile.bin diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/venc_fw/chagall.bin b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/venc_fw/chagall.bin similarity index 100% rename from br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/config/venc_fw/chagall.bin rename to br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/sensor/venc_fw/chagall.bin diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk index 6edbc98d..43ced14e 100644 --- a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk +++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk @@ -52,11 +52,14 @@ endef define SIGMASTAR_OSDRV_SSC335_INSTALL_TARGET_CMDS - $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors/config/venc_fw - $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/config/venc_fw $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/sensor/config/venc_fw/chagall.bin + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d + $(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/script/S99sigmastar - $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors/config/iqfile - $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/config/iqfile $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/sensor/config/iqfile/imx307/imx307_iqfile.bin + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors/iqfile + $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/iqfile $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/sensor/iqfile/imx307_iqfile.bin + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors/venc_fw + $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/venc_fw $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/sensor/venc_fw/chagall.bin $(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/4.9.84/sigmastar $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.9.84/sigmastar $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/kmod/*.ko @@ -76,7 +79,9 @@ define SIGMASTAR_OSDRV_SSC335_INSTALL_TARGET_CMDS $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.9.84/sigmastar $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/sensor/sensor_*.ko $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin - $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/script/* + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/script/load* + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/script/ircut_demo + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/script/debug_level # $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/fonts # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/fonts $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/fonts/*.bin diff --git a/br-ext-chip-xiongmai/Config.in b/br-ext-chip-xiongmai/Config.in index 4ebdd73f..00f2ced9 100644 --- a/br-ext-chip-xiongmai/Config.in +++ b/br-ext-chip-xiongmai/Config.in @@ -1,11 +1,12 @@ source "$BR2_EXTERNAL_XIONGMAI_PATH/linux/Config.ext.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/xiongmai_patcher/Config.in" -source "$BR2_EXTERNAL_XIONGMAI_PATH/package/xiongmai-osdrv-xm510/Config.in" -source "$BR2_EXTERNAL_XIONGMAI_PATH/package/xiongmai-osdrv-xm530/Config.in" +source "$BR2_EXTERNAL_XIONGMAI_PATH/package/aura-httpd/Config.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/fwprintenv-ng/Config.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/ipctool/Config.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/libevent-mini/Config.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/majestic/Config.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/node-exporter/Config.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/vtund-lite/Config.in" +source "$BR2_EXTERNAL_XIONGMAI_PATH/package/xiongmai-osdrv-xm510/Config.in" +source "$BR2_EXTERNAL_XIONGMAI_PATH/package/xiongmai-osdrv-xm530/Config.in" source "$BR2_EXTERNAL_XIONGMAI_PATH/package/yaml-cli/Config.in" diff --git a/br-ext-chip-xiongmai/external.mk b/br-ext-chip-xiongmai/external.mk index d4603733..ea09d487 100644 --- a/br-ext-chip-xiongmai/external.mk +++ b/br-ext-chip-xiongmai/external.mk @@ -1,11 +1,12 @@ include $(BR2_EXTERNAL_XIONGMAI_PATH)/linux/linux-ext-xiongmai_patcher.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/xiongmai_patcher/xiongmai_patcher.mk -include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/xiongmai-osdrv-xm510/xiongmai-osdrv-xm510.mk -include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/xiongmai-osdrv-xm530/xiongmai-osdrv-xm530.mk +include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/aura-httpd/aura-httpd.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/fwprintenv-ng/fwprintenv-ng.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/ipctool/ipctool.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/libevent-mini/libevent-mini.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/majestic/majestic.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/node-exporter/node-exporter.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/vtund-lite/vtund-lite.mk +include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/xiongmai-osdrv-xm510/xiongmai-osdrv-xm510.mk +include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/xiongmai-osdrv-xm530/xiongmai-osdrv-xm530.mk include $(BR2_EXTERNAL_XIONGMAI_PATH)/package/yaml-cli/yaml-cli.mk \ No newline at end of file diff --git a/br-ext-chip-xiongmai/package/aura-httpd b/br-ext-chip-xiongmai/package/aura-httpd new file mode 120000 index 00000000..e7e090ee --- /dev/null +++ b/br-ext-chip-xiongmai/package/aura-httpd @@ -0,0 +1 @@ +../../general/package/aura-httpd \ No newline at end of file diff --git a/general/package/aura-httpd/Config.in b/general/package/aura-httpd/Config.in new file mode 100644 index 00000000..e23d0122 --- /dev/null +++ b/general/package/aura-httpd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_AURA_HTTPD + bool "aura-httpd" + help + aura-httpd provides a simple way to bring aura to the world of the WEB automatically + creating a fun, easy to use REST API out of the methods you've exported from an aura node. + It's still WIP and not yet usable + + https://github.com/nekromant/aura-httpd diff --git a/general/package/aura-httpd/aura-httpd.mk b/general/package/aura-httpd/aura-httpd.mk new file mode 100644 index 00000000..58dbf3f0 --- /dev/null +++ b/general/package/aura-httpd/aura-httpd.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# aura-httpd | updated 2021.06.19 +# +################################################################################ + +AURA_HTTPD_VERSION = 251c0e110717cfbd25346161a41fa9aef7c801dd +AURA_HTTPD_SITE = $(call github,nekromant,aura-httpd,$(AURA_HTTPD_VERSION)) +AURA_HTTPD_LICENSE = MIT +AURA_HTTPD_LICENSE_FILES = LICENSE + +#AURA_HTTPD_CONF_OPTS += -DCROSS_COMPILE=? + +AURA_HTTPD_MAKE_OPTS += VERBOSE=1 + +$(eval $(cmake-package)) diff --git a/general/package/yaml-cli/yaml-cli.mk b/general/package/yaml-cli/yaml-cli.mk index 76f75220..fe5110f9 100644 --- a/general/package/yaml-cli/yaml-cli.mk +++ b/general/package/yaml-cli/yaml-cli.mk @@ -1,10 +1,10 @@ ################################################################################ # -# yaml-cli | updated 2021.06.17 +# yaml-cli | updated 2021.06.19 # ################################################################################ -YAML_CLI_VERSION = 0.0.1 +YAML_CLI_VERSION = 0.0.2 YAML_CLI_SITE = $(call github,openipc,yaml-cli,v$(YAML_CLI_VERSION)) YAML_CLI_LICENSE = MIT YAML_CLI_LICENSE_FILES = LICENSE