rtsp_error_t rtsp_phdr_content_len(rtsp_header_t *header, const char *msg, int32_t msg_len, const char **endptr){

	const char *end = msg + msg_len;
	unsigned long long ull_cseq = 0;

	if(!header || !msg || msg_len <= 0){
		return (RTSP_E_INVALID_ARG);
	}

	ull_cseq = strtoull(msg,(char **) endptr, 10);
	/* TODO - Find strntoull and put it here 
	 * Simple way is to swap last char with null char and then restore after computation*/
	if(*endptr >= end){
		ERR_LOG("Invalid Memory Access");
		return (RTSP_E_INCOMPLETE);
	}

	if(ull_cseq > UINT_MAX){
		ERR_LOG ("CSeq not supported beyond %u - occured (%llu)", UINT_MAX, ull_cseq);
		return (RTSP_E_UNSUPPORTED);
	}

	header->content_len.bytes = ull_cseq;
	return (RTSP_E_SUCCESS);
}
示例#2
0
/*******************************************************************************
    Function  Definition
*******************************************************************************/
extern sint32 autolink_mcu_send_msg(sint32 times,uint8 cmd1,uint8* data,sint8 len)
{
    uint8 reply[FRAME_LEN_MAX];
    sint32 result = -1;
    sint32 iter = 0;
    reply[0] = MCU_SYNC_BYTE_0;
    reply[1] = MCU_SYNC_BYTE_1;
    reply[2] = MCU_FLAG_BYTE_NORMAL;
    reply[4] = mcuinfo.arm_framecounter++;
    reply[5] = cmd1;
    reply[6] = MCU_ACK_BYTE_FALSE;
    reply[7] = len;
    memcpy(reply+8,data,len);

    reply[3] = autolink_mcu_checksum(reply[2],reply+4,len+4);

    while(iter < times){
        if( len+8 == autolink_mcu_sendinfo(reply,len+8) ){
            result = 0;
            break;
        }
        iter++;
        ERR_LOG("-------------------------------------------\n");
        ERR_LOG("mcu send data failed %d times\n",iter);
        ERR_LOG("-------------------------------------------\n");
    }

    return result;
}
/*******************************************************************************
    Function
*******************************************************************************/
extern sint32 autolink_send_mcu_radio_set_freq(autolink_radio_st radio)
{
    uint8 cmd;
    uint8 msg_data[DATA_LEN_MAX];
    uint8 len = 0;

    cmd = MCU_CMD_RADIO;
    msg_data[0] = MCU_RADIO_DATA0_ARMSET_FREQ;

    DBG_LOG("SEND:set band %d\n",radio.set.band);
    switch(radio.set.band)
    {
        case RADIO_BAND_FM:
            msg_data[1] =  MCU_RADIO_DATA1_ARMSET_BAND_FM;
            break;
        case RADIO_BAND_AM:
            msg_data[1] =  MCU_RADIO_DATA1_ARMSET_BAND_AM;
            break;
        default:
            ERR_LOG("UNKOWN MSG\n");
            return -1;
    }

    DBG_LOG("SEND:set freq_position %d\n",radio.set.freq_position);
    msg_data[2] = radio.set.freq_position;

    DBG_LOG("SEND:set type %d\n",radio.set_type);
    switch(radio.set_type)
    {
        case RADIO_SET_SELECT:
            msg_data[3] =  MCU_RADIO_DATA1_ARMSET_SELECT;
            break;
        case RADIO_SET_SAVE:
            msg_data[3] =  MCU_RADIO_DATA1_ARMSET_SAVE;
            break;
        default:
            ERR_LOG("UNKOWN MSG\n");
            return -1;
    }

    DBG_LOG("SEND:set freq %f\n",radio.set.freq);
    switch(radio.set.band)
    {
        case RADIO_BAND_AM:
            int_to_byte(radio.set.freq,NULL,NULL,&msg_data[4],&msg_data[5]);
            break;
        case RADIO_BAND_FM:
            int_to_byte(radio.set.freq*100,NULL,NULL,&msg_data[4],&msg_data[5]);
            break;
        default:
            ERR_LOG("UNKOWN MSG\n");
            return -1;
    }


    len = 6;
    return autolink_mcu_send_msg(1,cmd,msg_data,len);
}
示例#4
0
文件: diru.c 项目: bgpsecurity/rpstir
char *r2adir(
    char *indir)
{
    char *mydir;
    char *outdir;
    char *ptr;

    if (indir == NULL || indir[0] == 0)
    {
        LOG(LOG_ERR, "indir must not be NULL or an empty string");
        return (NULL);
    }
    if (isadir(indir) <= 0)
        return (NULL);
    // get current dir
    mydir = (char *)calloc(PATH_MAX, sizeof(char));
    if (mydir == NULL)
    {
        LOG(LOG_ERR, "out of memory");
        return (NULL);
    }
    outdir = (char *)calloc(PATH_MAX, sizeof(char));
    if (outdir == NULL)
    {
        free((void *)mydir);
        LOG(LOG_ERR, "out of memory");
        return (NULL);
    }
    ptr = getcwd(mydir, PATH_MAX);
    if (ptr == NULL)
    {
        free((void *)mydir);
        free((void *)outdir);
        ERR_LOG(errno, NULL, "failed to get current working directory");
        return (NULL);
    }
    if (chdir(indir) < 0)
    {
        free((void *)mydir);
        free((void *)outdir);
        ERR_LOG(errno, NULL, "failed to change directory to %s", indir);
        return (NULL);
    }
    ptr = getcwd(outdir, PATH_MAX);
    if (chdir(mydir))
        abort();
    free((void *)mydir);
    if (ptr == NULL)
    {
        free((void *)outdir);
        ERR_LOG(errno, NULL, "unable to get current working directory");
        return (NULL);
    }
    return (outdir);
}
示例#5
0
/*****************************************************************************
 Function   : IsSupportCpuHotplug
 Description: get os info to detect if os support cpu hotplug
 Input      : None
 Output     : None
 Return     : TRUE or FALSE
 *****************************************************************************/
int IsSupportCpuHotplug(void)
{
    int ret = 0;
    char *pszHotplugFlagScript = "uname_str=`uname -r`;"
         "cpu_hotplug_conf=`grep 'CONFIG_HOTPLUG_CPU' /boot/config-$uname_str 2>/dev/null | awk -F= '{print $2}'`;"
         "printf $cpu_hotplug_conf 2>/dev/null ;";
    char pszHotplugFlag[1024] = {0};

    ret = uvpPopen(pszHotplugFlagScript, pszHotplugFlag, 1024);
    if (0 != ret)
    {
        ERR_LOG("Failed to call uvpPopen, ret=%d.", ret);
        return ret;
    }

    if (0 == strcmp("y", pszHotplugFlag))
    {
        return XEN_SUCC;
    }
    else
    {
        INFO_LOG("This OS is not supported cpu hotplug.");
        return XEN_FAIL;
    }
}
int camera_flash_register(struct camera_flash_dev *tdev)
{
  int ret;

  if (!tdev || !tdev->name || !tdev->enable || !tdev->get){
    return -EINVAL;
  }

  tdev->index = atomic_inc_return(&device_count);
  tdev->dev = device_create(msm_camera_flash_class, NULL, MKDEV(0, tdev->index), NULL, tdev->name);
  if (IS_ERR(tdev->dev)){
    return PTR_ERR(tdev->dev);
  }

  ret = device_create_file(tdev->dev, &dev_attr_camera_flash);
  if (ret < 0){
    goto err_create_file;
  }

  dev_set_drvdata(tdev->dev, tdev);
  tdev->state = 0;
  return 0;

err_create_file:
  device_destroy(msm_camera_flash_class, MKDEV(0, tdev->index));
  ERR_LOG(KERN_ERR "cabc: Failed to register driver %s\n", tdev->name);

  return ret;
}
示例#7
0
/**
 * name_lost_cb - The GDBusConnection on which to acquire the name 
 *                or NULL if the connection was disconnected.
 *
 * @connection: The GDBusConnection on which to acquired the name
 * @bus_name  : The bus name being owned
 * @user_data :
 *
 * returns:
 *     void
 *
 */
static void
name_lost_cb(GDBusConnection *connection,
                             const gchar     *bus_name,
                             gpointer         user_data)
{
    if(connection == NULL)
    {
        ERR_LOG ("name_lost_cb Error: Failed to connect to dbus.\n");
    }
    else
    {
        ERR_LOG ("name_lost_cb Error: Failed to obtain bus name: %s.\n", bus_name);
    }

    g_main_loop_quit(mainloop);
}
示例#8
0
/**
 * bus_acquired_cb - handler to invoke when connected to the bus 
 *                   of type bus_type or NULL.
 *
 * @connection: The GDBusConnection to a message bus
 * @bus_name  : The name that is requested to be owned
 * @user_data :
 *
 * returns:
 *     void
 *
 */
static void
bus_acquired_cb(GDBusConnection *connection,
                                const gchar     *bus_name,
                                gpointer        user_data)
{

  GError *pError = NULL;
  gchar *obj_path = user_data;

  INFO_LOG ("bus_acquired_cb ,Acquired session bus.\n");

  /** Second step: Try to get a connection to the given bus. */
  pSkeleton = gdbus_mcuinfo_skeleton_new();

  /** Third step: Attach to dbus signals. */
  (void) g_signal_connect(pSkeleton, "handle-send-mcuinfo", G_CALLBACK(method_send_mcuinfo), NULL);

  /** Fourth step: Export interface skeleton. */
  (void) g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(pSkeleton),
                                            connection,
                                            obj_path,//AUTOLINK_GDBUS_BUS_OBJECT_PATH,
                                            &pError);
  if(pError != NULL){
    ERR_LOG ("bus_acquired_cb: Failed to export object. Reason: %s.\n", pError->message);
    g_error_free(pError);
    g_main_loop_quit(mainloop);
  }

}
/*******************************************************************************
    Function
*******************************************************************************/
static void autolink_mcu_parse_radio_savereq(uint8* data,uint32 len)
{
    sint32 freq = byte_to_int(0,0,data[2],data[3]);

    switch(data[0])
    {
        case MCU_RADIO_DATA1_ALREADY_SAVEFREQ_BAND_FM:
            mcu_info_data.radio.save.band = RADIO_BAND_FM;
            mcu_info_data.radio.save.freq = (float)freq/100;
            DBG_LOG("GET:save freq FM %f\n",mcu_info_data.radio.save.freq);
            break;
        case MCU_RADIO_DATA1_ALREADY_SAVEFREQ_BAND_AM:
            mcu_info_data.radio.save.band = RADIO_BAND_AM;
            mcu_info_data.radio.save.freq = freq;
            DBG_LOG("GET:save freq AM %d\n",mcu_info_data.radio.save.freq);
            break;
        default:
            ERR_LOG("GET:save freq unkown\n");
            return;
    }

    mcu_info_data.radio.save.freq_position = data[1];
    DBG_LOG("GET:save freq radio position %d\n",mcu_info_data.radio.save.freq_position);

    autolink_emit_mcu_state(TYPE_RADIO_SAVEFREQ,mcu_info_data);
    return;
}
示例#10
0
/*****************************************************************************
 Function   : GetSupportMaxnumCpu
 Description: cpu hotplug support the maxnum cpu
 Input      : None
 Output     : None
 Return     : return the maxnum
 *****************************************************************************/
int GetSupportMaxnumCpu(void)
{
    int ret = 0;
    int cpu_nr = 0;
    char *pszSysCpuNumScript = "uname_str=`uname -r`;"
         "syscpu_enable_num=`grep 'CONFIG_NR_CPUS' /boot/config-$uname_str 2>/dev/null | awk -F= '{print($2)}'`;"
         "printf $syscpu_enable_num 2>/dev/null ;";
    char pszSysCpuNum[1024] = {0};

    ret = uvpPopen(pszSysCpuNumScript, pszSysCpuNum, 1024);
    if (0 != ret)
    {
        ERR_LOG("Failed to call uvpPopen, ret=%d.", ret);
        return ret;
    }

    cpu_nr = strtoul(pszSysCpuNum, NULL, 10);

    /*lint -e648 */
    if (ULONG_MAX == cpu_nr)
    {
        return -ERANGE;
    }
    /*lint +e648 */
    else if (cpu_nr <= CPU_NR_MAX)
    {
        return cpu_nr;
    }
    else
    {
        return CPU_NR_MAX;
    }
}
示例#11
0
int is_redhat()
{
    FILE *pF = NULL;
    char strIssue[SHELL_BUFFER] = {0};

    if(0 == access("/etc/redhat-release", R_OK))
    {
        return 1;
    }
    pF = fopen("/etc/issue", "r");
    if (NULL == pF)
    {
        ERR_LOG("[Monitor-Upgrade]: open /etc/issue fail.");
        return 0;
    }

    while(fgets(strIssue, SHELL_BUFFER-1, pF) != NULL)
    {
        if (strstr(strIssue, "Red Hat") || strstr(strIssue, "GreatTurbo"))
        {
            fclose(pF);
            return 1;
        }
    }

    fclose(pF);
    return 0;
}
示例#12
0
int isdebian()
{
    FILE *pF = NULL;
    char strIssue[SHELL_BUFFER] = {0};

    if(0 == access("/etc/debian_version", R_OK))
    {
        return 1;
    }
    pF = fopen("/etc/issue", "r");
    if (NULL == pF)
    {
        ERR_LOG("[Monitor-Upgrade]: open /etc/issue fail.");
        return 0;
    }

    while(fgets(strIssue, SHELL_BUFFER-1, pF) != NULL)
    {
        if (strstr(strIssue, "Debian"))
        {
            fclose(pF);
            return 1;
        }
    }

    fclose(pF);
    return 0;
}
示例#13
0
/*******************************************************************************
    Function  Definition
*******************************************************************************/
static void autolink_mcu_packet_parse(uint8 cmd1,uint8* data, sint8 len)
{
    DBG_LOG("NEW MSG\n");
    DBG_LOG("CMD1=%X\n",cmd1);
    switch(cmd1)
    {
        case MCU_CMD_SYSTEM:
             autolink_mcu_parse_system(data,len);
             break;
        case MCU_CMD_KEY:
             autolink_mcu_parse_key(data,len);
             break;
        case MCU_CMD_RADIO:
             autolink_mcu_parse_radio(data,len);
             break;
        case MCU_CMD_SETTING:
             autolink_mcu_parse_setting(data,len);
             break;
        case MCU_CMD_MEDIA:
             autolink_mcu_parse_media(data,len);
             break;
        case MCU_CMD_UPDATE:
             autolink_mcu_parse_update(data,len);
             break;
        case MCU_CMD_CAN:
             autolink_mcu_parse_can(data,len);
             break;
        default:
            ERR_LOG("UNKOWN MSG\n");
            break;
    }

    return ;
}
示例#14
0
/*****************************************************************************
Function   : GetIpv4VifIp
Description: get Ipv4 ip info
Input       : None
Output     : None
Return     : 
*****************************************************************************/
int GetIpv4VifIp(int skt, int num, char *ifname)
{
    struct ifaddrs *ifaddr, *ifa;
    int ret;
    char address[IPV6_ADDR_LEN];

    if (getifaddrs(&ifaddr) == -1)
    {
        ERR_LOG("Call getifaddrs failed, errno=%d", errno);
        return ERROR;
    }

    for (ifa = ifaddr; ifa; ifa = ifa->ifa_next)
    {
        if (NULL == ifa->ifa_addr)
            continue;
        if( AF_INET != ifa->ifa_addr->sa_family)
            continue;

        ret = getnameinfo(ifa->ifa_addr,sizeof(struct sockaddr_in),address, IPV6_ADDR_LEN, NULL, 0, NI_NUMERICHOST);
        if (0 != ret)
        {
            ERR_LOG("Call getnameinfo for nic %s failed: %s.", ifname, gai_strerror(ret));
            continue;
        }

        if((NULL != ifa->ifa_name) && (strcmp(ifa->ifa_name,ifname) == 0) && (AF_INET == ifa->ifa_addr->sa_family))
        {
            snprintf_s(gtNicIpv6Info.info[gtNicIpv6Info.count].ifname, VIF_NAME_LENGTH, VIF_NAME_LENGTH, "%s", ifname);
            GetIpv6VifMac(skt,ifname);
            gtNicIpv6Info.info[gtNicIpv6Info.count].ipversionflag = 4;
            snprintf_s(gtNicIpv6Info.info[gtNicIpv6Info.count].ipaddr, IPV6_ADDR_LEN, IPV6_ADDR_LEN, "%s", address);

            GetIpv4VifGateway(skt, ifname);

            GetIpv6Flux(skt,ifname);
            GetIpv6NetFlag(skt,ifname);

            num++;
            gtNicIpv6Info.count = num;
        }
    }

    freeifaddrs(ifaddr);
    return gtNicIpv6Info.count;
}
示例#15
0
文件: Main.c 项目: namanjain14/Prayas
	void _general_exception_handler(unsigned cause, unsigned status)
	{
		Nop();
			#if defined(TEST)
			{
				memcpypgm2ram(Err_String,"C32 GENRAl EXECPTION",19);
				ERR_LOG (Err_String);
			}
			#endif
		Nop();
	}
示例#16
0
文件: trunk_ssp.c 项目: jiangli/lacp
uint32_t trunk_ssp_get_global_index( uint32_t slot, uint32_t port, uint32_t *port_index)
{
    uint32_t ret = 0;
    if (port == 0)
    {
        ERR_LOG(ret, slot, port, 0);
        return M_LACP_INTERNEL;
    }

    *port_index = slot * 8 + (port - 1) ;
    return 0;
}
示例#17
0
/** Test wether unnamed semaphores are supported. */
static void initialize_support_unnamed()
{
    char errorbuf[ERROR_BUF_SIZE];
    sem_t test_sem;

    if (sem_init(&test_sem, 0, 0) == 0)
    {
        support_unnamed = true;

        if (sem_destroy(&test_sem) != 0)
        {
            ERR_LOG(errno, errorbuf, "sem_destroy()");
        }
    }
    else
    {
        switch (errno)
        {
            case ENOSYS:
                support_unnamed = false;
                break;

            default:
                // It /might/ be a temporary error, so just log it and move on.
                ERR_LOG(errno, errorbuf, "sem_init()");
                support_unnamed = true;
                break;
        }
    }

    if (support_unnamed)
    {
        LOG(LOG_DEBUG, "system appears to support unnamed semaphores");
    }
    else
    {
        LOG(LOG_DEBUG, "system does not appear to support unnamed semaphores");
    }
}
/*******************************************************************************
    Function
*******************************************************************************/
extern void autolink_mcu_parse_system(uint8 cmd2,uint8* data,uint32 len)
{
    DBG_LOG("CMD2=%X\n",cmd2);
    switch(cmd2)
    {
        case MCU_SYSTEM_CMD2_HANDSHAKE:
             autolink_mcu_parse_system_handshake(data,len);
             break;
        default:
             ERR_LOG("UNKOWN MSG\n");
             break;
    }
    return ;
}
示例#19
0
/**
 * autolink_dbusclient_init - Linux app management
 *
 * @pdbusclient: dbus server struct
 *
 * returns:
 *     0 - ok, other - err
 */
extern gint32
autolink_dbusclient_deinit(autolink_dbusclient_ptr pdbusclient)
{
  if (pdbusclient == NULL) return ERR_PARAMENT;
  if (pdbusclient->tid_client == 0) {
    ERR_LOG ("dbus client thread isn't alive.\n");
    return ERR_CONDITION;
  }
  /* Stop a GMainLoop from running */
  g_main_loop_quit (pdbusclient->mainloop);
  g_main_loop_unref (pdbusclient->mainloop);
  /* wait client thread end */
  pthread_join (pdbusclient->tid_client, NULL);

  return ERR_OK;
}
/*******************************************************************************
    Function
*******************************************************************************/
static void autolink_mcu_parse_system_handshake(uint8* data,uint32 len)
{
    switch(data[0])
    {
        case MCU_SYSTEM_DATA0_HANDSHAKE:
            mcuinfo_system.handshake = MCU_SYSTEM_HANDSHAKE_TRUE;
            DBG_LOG("GET:mcu handshake successful info\n");
            break;
        default:
            ERR_LOG("GET:handshake unkown\n");
            return;
    }


    return;
}
rtsp_error_t rtsp_phdr_session(rtsp_header_t *header, const char *msg, int32_t msg_len, const char **endptr){
	const char *scan = NULL;
	const char *scan_end = NULL;
	const char *temp = NULL;
	const char *end = msg + msg_len;
	rtsp_error_t err = RTSP_E_FAILURE;

	if(!header || !msg || msg_len <= 0){
		return (RTSP_E_INVALID_ARG);
	}

	scan = msg;
	header->session.id = scan;
	while (scan < end && (isalnum(*scan) || is_safe(*scan)))
		scan++;

	header->session.id_len = scan-msg;
	if(header->session.id_len > 0)
		err = RTSP_E_SUCCESS;
	if(*scan == ';'){
		scan++;	
		scan_end = find_char(scan, end, '\r');
		err = is_strncasematch(scan, scan_end, "timeout", STATIC_STR_LEN("timeout"));
		if(err==RTSP_E_SUCCESS){
			scan+=STATIC_STR_LEN("timeout");
			if(*scan == '='){
				scan++;
				header->session.timeout = strtoul(scan,(char **)&temp,10);
				if(temp > (scan_end+1)){
					ERR_LOG("Parsing Session timeout Error - Check Logic");
					err = RTSP_E_FAILURE;
				} else {
					scan = temp;
				}
			}
		}
	} 
	if(endptr)
		*endptr = scan;
	return (err);

}
示例#22
0
/**
 * main - main function dbus client, to test libmedia
 *
 * @argc: para index
 * @argv: param
 *
 */
int
main (int argc, char **argv)
{
  int ret;
  autolink_dbusclient_st dbusclient = {0};
  gchar mtd_out[BUF_LEN];
  gchar mtd_err[BUF_LEN]; 

  loginfo = autolink_loglevel_init("mcu-test",AUTOKINK_LOGLEVEL_2,AUTOKINK_LOGCTR_TRUE);

  ret = autolink_dbusclient_init(&dbusclient, BUS_NAME, OBJ_PATH);
  INFO_LOG ("dbus client init %s: %d.\n", (!ret)?"success":"fail", ret);
 
   /* register up-layer signal callback func */
  signal_callback_st sigfunc;
  sigfunc.mcuinfo_cb = signal_mcuinfo_cb;
  ret = autolink_reg_sigcallback (sigfunc);
  INFO_LOG ("register up layer signal callback %s.\n", (!ret)?"success":"fail");

  while (autolink_dbusservice_ready()) usleep (300*1000);

  autolink_mcu_info_dbus_st mcu_info;
  mcu_info.mcu_info_type = 5;
  ret = autolink_mtdcall_sendmcuinfo (&mcu_info, mtd_out, mtd_err);
  //INFO_LOG ("method 1 call %s: %d.\n", (!ret)?"success":"fail", ret);
  if (ret == 0) {
    INFO_LOG ("method send mcuinfo call success, mtd_out: %s.\n", mtd_out);
  }
  else if (ret == ERR_OTHER) {
    ERR_LOG ("method send mcuinfo call fail: %s.\n", mtd_err);
  }

  INFO_LOG ("dbus-client is running.\n");
  while (1)
  {
    sleep (2);
  }

  ret = autolink_dbusclient_deinit (&dbusclient);
  INFO_LOG ("dbus client deinit %s: %d.\n", (!ret)?"success":"fail", ret);
}
示例#23
0
文件: 1-1.c 项目: Mellanox/arc_ltp
static int child_busy(int fd)
{
	int rc;

	/* suicide if sched_yield fails */
	alarm(4);

	/* Tell the parent we're ready */
	write(fd, "go", 2);
	
	for (;;) {
		rc = sched_yield();
		if (rc) {
			ERR_LOG("child: sched_yield", rc);
			exit(1);
		}
	}

	/* should not get here */
	exit(2);
}
示例#24
0
/*******************************************************************************
    Function
*******************************************************************************/
static void autolink_mcu_parse_radio_all_savereq(uint8* data,uint32 len)
{
    sint32 iter = 0;
    sint32 band = RADIO_BAND_FM;
    mcu_info_data.radio.allsave_count = data[1];

    switch(data[0])
    {
        case MCU_RADIO_DATA1_ALREADY_SAVEFREQ_BAND_FM:
            band = RADIO_BAND_FM;
            DBG_LOG("GET:allsave freq FM\n");
            break;
        case MCU_RADIO_DATA1_ALREADY_SAVEFREQ_BAND_AM:
            band = RADIO_BAND_AM;
            DBG_LOG("GET:allsave freq AM\n");
            break;
        default:
            ERR_LOG("GET:allsave freq unkown\n");
            return;
    }

    while(iter < mcu_info_data.radio.allsave_count)
    {
        mcu_info_data.radio.allsave[iter].band = band;
        if( RADIO_BAND_FM == band )
        {
            mcu_info_data.radio.allsave[iter].freq = (float)byte_to_int(0,0,data[2+iter*2],data[3+iter*2])/100;
        }
        else if( RADIO_BAND_AM == band )
        {
            mcu_info_data.radio.allsave[iter].freq = byte_to_int(0,0,data[2+iter*2],data[3+iter*2]);
        }
        DBG_LOG("GET:allsave freq %f\n",mcu_info_data.radio.allsave[iter].freq);
        iter++;
    }

    autolink_emit_mcu_state(TYPE_RADIO_ALL_SAVEFREQ,mcu_info_data);
    return;
}
示例#25
0
文件: diru.c 项目: bgpsecurity/rpstir
int isadir(
    char *indir)
{
    struct stat mystat;
    int sta;

    if (indir == NULL || indir[0] == 0)
        return (-1);
    memset(&mystat, 0, sizeof(mystat));
    sta = stat(indir, &mystat);
    if (sta < 0)
    {
        ERR_LOG(errno, NULL, "stat(\"%s\") failed", indir);
        return (sta);
    }
    if (S_ISDIR(mystat.st_mode))
        return (1);
    else
    {
        LOG(LOG_ERR, "%s is not a directory", indir);
        return (0);
    }
}
示例#26
0
/*******************************************************************************
    Function
*******************************************************************************/
extern void autolink_mcu_parse_radio(uint8* data,uint32 len)
{
    DBG_LOG("CMD2=%X\n",data[0]);
    switch(data[0])
    {
        case MCU_RADIO_DATA0_MAINFREQ:
             autolink_mcu_parse_radio_mainfreq(data+1,len-1);
             break;
        case MCU_RADIO_DATA0_SAVEFREQ:
             autolink_mcu_parse_radio_savereq(data+1,len-1);
             break;
        case MCU_RADIO_DATA0_ALREADY_SAVEFREQ:
             autolink_mcu_parse_radio_all_savereq(data+1,len-1);
             break;
        case MCU_RADIO_DATA0_ARMSET_FREQ:
             //ARM->MCU
             break;
        default:
            ERR_LOG("UNKOWN MSG\n");
            break;
    }
    return ;
}
示例#27
0
/**
 * autolink_dbusclient_init - Linux app management
 *
 * @pdbusclient : autolink_dbusclient_st
 * @busname : dbus bus name, for example "org.autolink.AppMngService"
 * @signame : signal name, for example "AppMngSignal",Must be camel format
 *
 * returns:
 * 
 */
extern gint32
autolink_dbusclient_init(autolink_dbusclient_ptr pdbusclient, const char *busname, const char *objpath)
{
  int ret;
  gboolean bRet = TRUE;
  GError *pConnError = NULL;
  GError *pProxyError = NULL;
  pthread_t tid_client;

  if (pdbusclient == NULL || busname == NULL || objpath == NULL) return ERR_PARAMENT;

  if (pdbusclient->tid_client != 0) return ERR_CONDITION;

  g_type_init();  /** initial for usage of "g" types */

  mainloop = g_main_loop_new (NULL, FALSE);   /** create main loop, but do not start it.*/

  do{
    bRet = TRUE;
    /** First step: get a connection */
    pConnection = g_bus_get_sync (AUTOLINK_GDBUS_BUS, NULL, &pConnError);

    if (NULL == pConnError){
      /** Second step: try to get a connection to the given bus.*/
      pProxy = gdbus_mcuinfo_proxy_new_sync (pConnection,
                                  G_DBUS_PROXY_FLAGS_NONE,
                                  busname, //AUTOLINK_GDBUS_BUS_NAME,
                                  objpath, //AUTOLINK_GDBUS_BUS_OBJECT_PATH,
                                  NULL,
                                  &pProxyError);
      if (0 == pProxy) {
        ERR_LOG ("autolink_dbusclient_init: Failed to create proxy. Reason: %s.\n", pProxyError->message);
        g_error_free (pProxyError);
        pConnError = NULL;
        bRet = FALSE;
      }
    }
    else{
      ERR_LOG ("autolink_dbusclient_init: Failed to connect to dbus. Reason: %s.\n", pConnError->message);
      g_error_free (pConnError);
      pConnError = NULL;
      bRet = FALSE;
    }
    usleep (200*1000);
  }while(FALSE == bRet);

  if (TRUE == bRet) {
    /** Third step: Attach to dbus signals */
    register_client_sighandler (pProxy);
  }

  /* create dbus client thread */
  ret = pthread_create (&tid_client,NULL,&dbus_client_thread,(void *)mainloop);
  INFO_LOG ("create dbus client pthread %s.\n",(ret)?"fail":"success");
  if (ret != 0) return ERR_THREAD;

  pdbusclient->mainloop = mainloop;
  pdbusclient->tid_client = tid_client;
  pdbusclient->pProxy = pProxy;

	return ERR_OK;
}
rtsp_error_t rtsp_phdr_transport(rtsp_header_t *header, const char *msg, int32_t msg_len, const char **endptr){

	const char *scan = NULL;
	const char *temp = NULL;
	const char *scan_start = NULL;
	const char *scan_end = NULL;
	const char *end = msg + msg_len;
	rtsp_error_t err = RTSP_E_FAILURE;

	if(!header || !msg || msg_len <= 0){
		return (RTSP_E_INVALID_ARG);
	}
	/* TODO - Multiple transport headers separated by comma.
	 */

	/* 
	 * transport-protocol/profile
	 */
	scan = msg;
	if(msg_len < STATIC_STR_LEN("RTP/AVP"))
		return (RTSP_E_FAILURE);

	if(0 != strncmp(scan, "RTP/AVP", STATIC_STR_LEN("RTP/AVP"))){
		return (RTSP_E_FAILURE);
	} 

	scan += STATIC_STR_LEN("RTP/AVP");
	header->transport.spec = 0;
	if(*scan == ';') {
		header->transport.spec = TSPEC_RTP_AVP_UDP;
	} else if(*scan == '/'){
		if(((scan+STATIC_STR_LEN("/TCP"))<end )
				&& (0 == strncasecmp(scan,"/TCP",STATIC_STR_LEN("/TCP")))){
			header->transport.spec = TSPEC_RTP_AVP_TCP;
			scan+=STATIC_STR_LEN("/TCP");
		} else if(((scan+STATIC_STR_LEN("/UDP"))<end) 
				&& (0 == strncasecmp(scan,"/UDP",STATIC_STR_LEN("/UDP")))){
			header->transport.spec = TSPEC_RTP_AVP_UDP;
			scan+=STATIC_STR_LEN("/UDP");
		}
	}

	while( (scan< end) && (*scan == ';')){
		scan++;
		scan_end = find_char(scan, end, ';');
		if(*scan_end != ';')
			scan_end = find_char(scan, end, '\r');

	/* 
	 * Quite a long function - TODO splitup
	 * Logic
	 * First char is the Key
	 * 1. Switch on key
	 * 2. Do strcmp and find match
	 * 3. Extract parameter values
	 */
		scan_start = scan;
		switch (*scan|0x20){
			case 'u':
				err = is_strncasematch(scan, scan_end, "unicast", STATIC_STR_LEN("unicast"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("unicast");
					header->transport.spec |= TSPEC_RTP_AVP_UNICAST;
					break;
				}
				break;
			case 'm':
				err = is_strncasematch(scan, scan_end, "multicast", STATIC_STR_LEN("multicast"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("multicast");
					header->transport.spec |= TSPEC_RTP_AVP_MULTICAST;
					break;
				}
				err = is_strncasematch(scan, scan_end, "mode", STATIC_STR_LEN("mode"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("mode");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;
					/*
					 * TODO - Mode parsing - Now we bypass and mark it as success
					 * 1\#mode
					 */
					scan = scan_end;
					break;
				}
				break;
			case 'd':
				err = is_strncasematch(scan, scan_end, "destination", STATIC_STR_LEN("destination"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("destination");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;
					{
						int host_len = 0;
						host_len = rtsp_get_valid_host_len(scan, (scan_end-scan));
						if(host_len < RTSP_MAX_HOST_LEN){
							strncpy(header->transport.destination, scan, host_len);
							scan+=host_len;
							break;
						} else {
							ERR_LOG("Invalid Destination host");
							err = RTSP_E_FAILURE;
							break;
						}

					}
				}
				break;
			case 'i':
				err = is_strncasematch(scan, scan_end, "interleaved", STATIC_STR_LEN("interleaved"));
				if(err == RTSP_E_SUCCESS){
					header->transport.spec |= TSPEC_RTP_AVP_INTERLEAVED;
					scan+=STATIC_STR_LEN("interleaved");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;

					header->transport.ileaved_ch_fr = strtoul(scan,(char **)&temp,10);
					if(temp > (scan_end+1)){
						ERR_LOG("Parsing Transport Error - Check Logic");
						err = RTSP_E_FAILURE;
						break;
					}
					if(temp-scan > 3){
						ERR_LOG("1*3DIGIT  spec not met");
						err = RTSP_E_FAILURE;
						break;
					}

					if(*temp == '-'){
						scan = ++temp;
						header->transport.ileaved_ch_to = strtoul(scan,(char **)&temp,10);
						if(temp > (scan_end+1)){
							ERR_LOG("Parsing Transport Error - Check Logic");
							err = RTSP_E_FAILURE;
							break;
						}
						if(temp-scan > 3){
							ERR_LOG("1*3DIGIT  spec not met");
							err = RTSP_E_FAILURE;
							break;
						}
					} else {
						header->transport.ileaved_ch_to = -1;
					}
				}
				break;
			case 'a':
				err = is_strncasematch(scan, scan_end, "append", STATIC_STR_LEN("append"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("append");
					header->transport.append = 1;
					break;
				}
				break;
			case 't':
				err = is_strncasematch(scan, scan_end, "ttl", STATIC_STR_LEN("ttl"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("ttl");
					if(*scan!='='){
						err = (RTSP_E_FAILURE);
						break;
					}
					temp = scan;
					header->transport.ttl = strtoul(scan, (char **)&temp,10);
					if(temp > (scan_end+1)){
						ERR_LOG("Parsing Transport Error - Check Logic");
						err = RTSP_E_FAILURE;
						break;
					}
					scan = temp;
				}
				break;
			case 'l':
				err = is_strncasematch(scan, scan_end, "layers", STATIC_STR_LEN("layers"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("layers");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;
					temp = scan;
					header->transport.layers = strtoull(scan,(char **)&temp,10);
					if(temp > (scan_end+1)){
						ERR_LOG("Parsing Transport Error - Check Logic");
						err = RTSP_E_FAILURE;
						break;
					}
				}
				break;
			case 'p':
				err = is_strncasematch(scan, scan_end, "port", STATIC_STR_LEN("port"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("port");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;
					temp = scan;
					header->transport.port_fr = strtoul(scan,(char **)&temp,10);
					if(temp > (scan_end+1)){
						ERR_LOG("Parsing Transport Error - Check Logic");
						err = RTSP_E_FAILURE;
						break;
					}
					if(temp-scan > 5){
						ERR_LOG("1*5DIGIT  spec not met");
						err = RTSP_E_FAILURE;
						break;
					}

					if(*temp == '-'){
						scan = ++temp;
						header->transport.port_to = strtoul(scan,(char **)&temp,10);
						if(temp > (scan_end+1)){
							ERR_LOG("Parsing Transport Error - Check Logic");
							err = RTSP_E_FAILURE;
							break;
						}
						if(temp-scan > 5){
							ERR_LOG("1*5DIGIT  spec not met");
							err = RTSP_E_FAILURE;
							break;
						}
					} else {
						header->transport.port_to = -1;
					}
					scan = temp;
				}
				break;
			case 'c':
				err = is_strncasematch(scan, scan_end, "client_port", STATIC_STR_LEN("client_port"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("client_port");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;
					temp = scan;
					header->transport.client_port_fr = strtoul(scan,(char **)&temp,10);
					if(temp > (scan_end+1)){
						ERR_LOG("Parsing Transport Error - Check Logic");
						err = RTSP_E_FAILURE;
						break;
					}

					if(temp-scan > 5){
						ERR_LOG("1*5DIGIT  spec not met");
						err = RTSP_E_FAILURE;
						break;
					}
					
					if(*temp == '-'){
						scan = ++temp;
						header->transport.client_port_to = strtoul(scan,(char **)&temp,10);
						if(temp > (scan_end+1)){
							ERR_LOG("Parsing Transport Error - Check Logic");
							err = RTSP_E_FAILURE;
							break;
						}
						if(temp-scan > 5){
							ERR_LOG("1*5DIGIT  spec not met");
							err = RTSP_E_FAILURE;
							break;
						}
					} else {
						header->transport.client_port_to = -1;
					}
					scan = temp;
				}
				break;
			case 's':
				err = is_strncasematch(scan, scan_end, "server_port", STATIC_STR_LEN("server_port"));
				if(err == RTSP_E_SUCCESS){
					scan+=STATIC_STR_LEN("server_port");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;
					temp = scan;
					header->transport.server_port_fr = strtoul(scan,(char **)&temp,10);
					if(temp > (scan_end+1)){
						ERR_LOG("Parsing Transport Error - Check Logic");
						err = RTSP_E_FAILURE;
						break;
					}
					if(temp-scan > 5){
						ERR_LOG("1*5DIGIT  spec not met");
						err = RTSP_E_FAILURE;
					}

					if(*temp == '-'){
						scan = ++temp;
						header->transport.server_port_to = strtoul(scan,(char **)&temp,10);
						if(temp > (scan_end+1)){
							ERR_LOG("Parsing Transport Error - Check Logic");
							err = RTSP_E_FAILURE;
							break;
						}
						if(temp-scan > 5){
							ERR_LOG("1*5DIGIT  spec not met");
							err = RTSP_E_FAILURE;
							break;
						}
					} else {
						header->transport.server_port_to = -1;
					}
					scan = temp;
				} else if (RTSP_E_SUCCESS == (err = is_strncasematch(scan, scan_end, "ssrc", STATIC_STR_LEN("ssrc")))){
					scan+=STATIC_STR_LEN("ssrc");
					if(*scan != '='){
						err = (RTSP_E_FAILURE);
						break;
					}
					scan++;
					/* 
					 * 8*8(HEX)
					 */
					if((scan+8) > scan_end){
						err = (RTSP_E_FAILURE);
						break;
					}
					temp = scan;
					header->transport.ssrc = strtoull(scan, (char **)&temp, 16);
					if((temp-scan) != 8){
						ERR_LOG("8*8(HEX) Spec not met for ssrc");
						err = (RTSP_E_FAILURE);
						break;
					}
					scan = temp;

				} else {
					err = RTSP_E_UNSUPPORTED;
				} 
				break;
			default:
				err = RTSP_E_UNSUPPORTED;
				break;
		}

		if((err == RTSP_E_UNSUPPORTED) || (scan != scan_end)){
			ERR_LOG("Parsing failed for Transport Parameter"\
					"\"%.*s",(int )(scan_end - scan_start), scan_start);
		} 

		if (err == RTSP_E_FAILURE){
			break;
		}
		scan = scan_end;
		/* Scan the next Parameter */
	}
	if(endptr)
		*endptr = scan;
	return (err);
}
示例#29
0
文件: 1-1.c 项目: Mellanox/arc_ltp
int main(void)
{
	int pid;
	int rc;
	int pfd[2];
	int status = PTS_UNRESOLVED;
	int s;
	struct sched_param sp;
	char buf[8];

	/* Set up a pipe, for synching.  */
	rc = pipe(pfd);
	if (rc) {
		ERR_LOG("pipe", rc);
		return status;
	}

	/* get in FIFO */
	sp.sched_priority = sched_get_priority_min(SCHED_FIFO);
	rc = sched_setscheduler(getpid(), SCHED_FIFO, &sp);
	if (rc) {
		ERR_LOG("sched_setscheduler", rc);
		return status;
	}

	/* Must only use a single CPU */
	rc = set_affinity(0);
	if (rc) {
		ERR_LOG("set_affinity", rc);
		return status;
	}

	pid = fork();
	if (pid == 0)
		child_busy(pfd[1]);

	if (pid < 0) {
		ERR_LOG("fork", rc);
		return status;
	}

	/* wait for child */
	rc = read(pfd[0], buf, sizeof(buf));
	if (rc != 2) {
		kill(pid, SIGTERM);
		waitpid(pid, NULL, 0);
		ERR_LOG("read", rc);
		return status;
	}

	/* Can only get here if sched_yield works. */
	kill(pid, SIGTERM);
	waitpid(pid, &s, 0);

	status = PTS_PASS;
	if (WIFSIGNALED(s)) {
		s = WTERMSIG(s);
		if (s != SIGTERM) {
			printf("Failed: kill signal: %d, should be: %d\n",
					s, SIGTERM);
			status = PTS_FAIL;
		}
	} else if (WIFEXITED(s)) {
		printf("Failed: child prematurely exited with: %d\n",
				WEXITSTATUS(s));
		status = PTS_FAIL;
	}

	if (status == PTS_PASS)
		printf("Test PASSED\n");

	return status;
}
static inline rtsp_error_t rtsp_parse_request_line(rtsp_start_line_t *p_start_line, const char *rtsp_msg_buffer, int32_t rtsp_msg_len, const char **endptr){

	const char *parse_string = rtsp_msg_buffer;
	const char *end = rtsp_msg_buffer + rtsp_msg_len;
	const char *temp = NULL;
	rtsp_error_t e_ret_val = RTSP_E_FAILURE;

	if(!p_start_line || !rtsp_msg_buffer || rtsp_msg_len <= 0){
		return (RTSP_E_INVALID_ARG);
	}
	/* R[6.1]
	 * Request-Line = Method SP Request-URI SP RTSP-Version CRLF
	 * Allowing multiple SP since RFC Text H[5.1] suggests
	 */


	e_ret_val = rtsp_get_method(&p_start_line->request.method, parse_string, rtsp_msg_len, &parse_string);
	
	if(e_ret_val != RTSP_E_SUCCESS ){
		return (e_ret_val);
	}

	/* Found valid Method Hence it is request line */ 
	p_start_line->msg_type = RTSP_MSG_REQUEST;

    /* SP */
	temp = skip_SP(parse_string, end);
	if((NULL == temp) || (temp==parse_string)){
		/* No spaces */
		e_ret_val = RTSP_E_FAILURE;
		return(e_ret_val);
	}else if(temp==end){
		/* Only spaces till end */
		e_ret_val = RTSP_E_INCOMPLETE;
		return(e_ret_val);
	}
	parse_string = temp;

	/* Request-URI  */
	e_ret_val = rtsp_get_url(&p_start_line->request.url ,parse_string, (rtsp_msg_len - (parse_string - rtsp_msg_buffer)), &parse_string);
	if(e_ret_val != RTSP_E_SUCCESS){
		ERR_LOG("Failed to parse URI");
		return (e_ret_val);
	}

	/* SP */
	temp = skip_SP(parse_string, end);
	if((NULL == temp) || (temp==parse_string)){
		/* No spaces */
		e_ret_val = RTSP_E_FAILURE;
		return(e_ret_val);
	}else if(temp==end){
		/* Only spaces till end */
		e_ret_val = RTSP_E_INCOMPLETE;
		return(e_ret_val);
	}
	parse_string = temp;

	/* RTSP-Version */
	e_ret_val = rtsp_get_version(&p_start_line->version, parse_string, (rtsp_msg_len - (parse_string - rtsp_msg_buffer)) , &parse_string);
	
	if(e_ret_val != RTSP_E_SUCCESS){
		return (e_ret_val);
	}

	/* CRLF */
	if((parse_string+2)  < end){
		if((*parse_string++ == RTSP_CR) && (*parse_string++ == RTSP_LF)){
			e_ret_val = RTSP_E_SUCCESS;
		} else {
			e_ret_val = RTSP_E_FAILURE;
		}
	} else {
		e_ret_val = RTSP_E_INCOMPLETE;
	}

	if(endptr)
		*endptr = parse_string;
	return (e_ret_val);
}