示例#1
0
int startLyCloudService(char* token,char* configStr)
{
	int ret = -1;
	if(!token || !configStr)
	{
		printf("token or configstring is NULL\n");
		return -1;
	}

	if(workFlag.msgid == -1)//防止多次调用
	{
		deviceConfigInit(&endPointConfig);//初始化配置相关结构体

		//创建消息队列处理以平台发过来的消息
		if((workFlag.msgid = createMsgId('h')) != -1)
		{
			if(pthread_create(&workFlag.pidMsgProc,NULL,msgProc,NULL) != 0)
			{
				//失败则不能响应平台的消息,应该退出程序
				printf("create msgProc thread failed\n");
				return -1;
			}
		}

		//创建工作模式更改处理线程
		ret = pthread_create(&workFlag.pidWork,NULL,configChangeProc,NULL);
		if(ret != 0)
		{
			printf("start configChangeProc thread failed\n");//创建线程失败将不能响应工作模式改变处理
		}

		while(1)
		{
			//开启云平台服务,并注册消息回调函数,调用此函数之后才能调用云平台的其他函数,第四个参数为对接厂商自定义数据,没有则不填
			ret = LY_startCloudService(token,configStr,popMessage,NULL);
			if(ret == 0)//返回0表示开启成功
			{
				break;
			} 
			printf("StartCloudService failed!  ret = %d  retry...\n",ret );
			sleep(1); 
		}
		printf("start lingyang cloud service success\n");
	}
	return 0;
}
示例#2
0
int main(int argc,char** argv)
{
	int num = -1,mode = 0, val = 1,time = 0;
	for(;;)
	{
		int index,c;
		c = getopt_long(argc,argv,short_options,long_options,&index);
		if(c == -1)
			break;
		switch (c)
		{
		case 0:
			break;
		case 't':
			sscanf(optarg, "%d", &time);
			break;
		case 'h':
		default:
			usage(argv[0]);
			break;
		}
	}
	if(time == 0)
	{
		time = 500;
	}
	int status;
	//./snx_gpio_ctl -n 2 -m 0 -v 0
	gpio_pin_info info;
	info.pinumber = 2;//重置管脚
	info.mode = 0;
	info.value = 1;
	int i = 0;
	//gpio_ms1 -n 7 -m 1 -v 1;opus_play -i /etc/notify/reset.opus;gpio_ms1 -n 7 -m 1 -v 0;播放提示在声波程序里面
	char* cmd[] = { "rm -f /etc/SNIP39/wpa_supplicant.conf /etc/init.d/uid  /etc/init.d/hashid;",
					"killall -9 updmgr;",
					"killall -9 push_360;",
					"killall -9 wpa_supplicant;",
					"killall -9 udhcpc;",
					"rm -f /etc/init.d/CloudService_*;",//如果有日志则删除日志
					"/bin/gpio_led -n 0 -m 1 -v 0;",
					"/bin/gpio_led -n 1 -m 1 -v 0;",
					"/bin/gpio_led -n 3 -m 1 -v 0;"
				};
	char run[64] = {0};//{"/etc/init.d/Voice2ConfigWifi"};
	int reset = 0;
	myMsg rcvMsg;
	msgid = createMsgId(RESET_MSG_SUB_ID);
	printf("360_reset msgid=%d\n",msgid);
	
	snx_gpio_open();
	while (1)
	{
		if(snx_gpio_write(info) == GPIO_FAIL)
		{
			printf ("write gpio%d error\n",2);
			sleep(3);
		}
		else
		{
			break;
		}
	}
	
	while (1)
	{
		//if(info.mode == 0)
		{
			info.value = 1;
			snx_gpio_read(&info);
			//printf("after snx_gpio_read errno=%d\n",errno);
			if(info.value == 0)
			{
	#ifdef CHANGAN
				int i = 100;
				while (i)
				{
					snx_gpio_read(&info);
					if(info.value == 1)
					{
						break;
					}
					i--;
					usleep(10 * 1000);
				}
				if(i == 0)
	#endif
				//printf("==>>>>>>>>>>>>>>>>>>>>>>>>>>>>>get reset signal\n");
				reset = 1;//硬件reset
				memset(run,0,64);
				sprintf(run,"%s%d%s","/etc/init.d/Voice2ConfigWifi ",reset,";");
			}
			
		}

		
		if(msgrcv(msgid,&rcvMsg,sizeof(rcvMsg),0,IPC_NOWAIT|MSG_NOERROR) != -1)
		{
			//printf("360_reset recv msg = %d\n",rcvMsg.type);
			//if(errno == 0 && rcvMsg.type == RESET_MSG_TYPE)// && errno != ENOMSG)
			{
				reset = 2;//解绑
				//printf("===============get debind signal\n");
				memset(run,0,64);
				memset(&rcvMsg,0,sizeof(rcvMsg));
				sprintf(run,"%s%d%s","/etc/init.d/Voice2ConfigWifi ",reset,";");
			}
		}
			
		
		if(reset == 1 || reset == 2)
		{
			printf("360_reset reset=%d\n",reset);
			reset = 0;
			i = 0;
			for(; i<8; i++)//依次执行shell脚本
			{
				int j = 3;
				do 
				{
					status = system(cmd[i]);
					if (-1 == status)
					{
						printf("system error!");
						usleep(3000);
					}
					else
					{
						if (WIFEXITED(status))  //正确退出
						{  
							if (0 == WEXITSTATUS(status)) //操作成功
							{  
								printf("run %s successfully.\n",cmd[i]);
								break;
							}  
							else if(i < 5)//操作失败//灭灯不打印失败。
							{  
								printf("run %s script fail, script exit code: %d\n",cmd[i],WEXITSTATUS(status));  
							}  
						}  
						else  //错误退出
						{  
							printf("exit status = [%d]\n", WEXITSTATUS(status));  
						}  
					}
				} while (i<5 && j--);
			}
			status = system(run);
			printf("run config status=%d\n",status);
		}
		usleep(1000*time);
	}
	snx_gpio_close();
	return 0;
}