int checkEnv (int sto_no, struct storage_info *p)
{
	char flag = 0;
	static char a8_beep_status = 0;

	if (0 == tem_alarm_status[sto_no])
	{
		if (p->temperature > p->temperatureMAX)
		 {
			sendMsgQueue (MSG_LED, MSG_LED_TEM_ON);     //fs210上的灯
			sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);//MSG_M0 transfer to M0
			sendMsgQueue (MSG_M0, MSG_M0_FAN_ON3 | sto_no << 6);
			p->fan_status = 3;
			tem_alarm_status[sto_no] = 2;
			flag = 1;
		}
		else if (p->temperature < p->temperatureMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_TEM_ON);     //fs210上的灯
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);//MSG_M0 transfer to M0
			p->fan_status = 0;
			tem_alarm_status[sto_no] = 1;
			flag = 1;

		}
		if (flag)
		{	
			pthread_mutex_lock (&mutex_sms);
			if (sto_no == 1)
				dev_sms_cmd = SMS_TEM |SMS_STRNO1;
			else
				dev_sms_cmd = SMS_TEM |SMS_STRNO2;
			pthread_mutex_unlock (&mutex_sms);
			pthread_cond_signal (&cond_sms);
			flag = 0;
	#if 1
			if (beep_status[sto_no] == 0)
			{
				printf("*****345beep*****");
				beep_status[sto_no] = 1;
				p->buzzer_status = 1;	    //9-16
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
				p->buzzer_status=1;
			}
			if (a8_beep_status == 0)
			{
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}
	#endif		
		}
	}
	else 
	{
		if (p->temperature < p->temperatureMAX && p->temperature > p->temperatureMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_TEM_OFF);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			sendMsgQueue (MSG_M0, MSG_M0_LED_OFF | sto_no << 6);
			p->fan_status = 0;
			tem_alarm_status[sto_no] = 0;
			if (!storageAllgood (sto_no))
			{
				beep_status[sto_no] = 0;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
			}
		}
	}

	if (0 == hum_alarm_status[sto_no])
	{
		
		if (p->humidity > p->humidityMAX)
		{
			sendMsgQueue (MSG_LED, MSG_LED_HUM_ON);
			sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);//MSG_M0 transfer to M0
			sendMsgQueue (MSG_M0, MSG_M0_FAN_ON3 | sto_no << 6);
			p->fan_status = 3;
			hum_alarm_status[sto_no] = 2;
			flag = 1;
		}
		else if (p->humidity < p->humidityMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_HUM_ON);
			sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);//MSG_M0 transfer to M0
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			p->fan_status = 0;
			hum_alarm_status[sto_no] = 1;
			flag = 1;
		}

		if (flag)
		{
			pthread_mutex_lock (&mutex_sms);
			if (sto_no == 1)
				dev_sms_cmd = SMS_HUM |SMS_STRNO1;
			else
				dev_sms_cmd = SMS_HUM |SMS_STRNO2;
			pthread_mutex_unlock (&mutex_sms);
			pthread_cond_signal (&cond_sms);
			flag = 0;
			if (beep_status[sto_no] == 0)
			{
				beep_status[sto_no] = 1;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
				p->buzzer_status=1;
			}
			if (a8_beep_status == 0)
			{
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}

		}
	}
	else
	{
		if (p->humidity < p->humidityMAX && p->humidity > p->humidityMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_HUM_OFF);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			sendMsgQueue (MSG_M0, MSG_M0_LED_OFF | sto_no << 6);
			p->fan_status = 0;
			hum_alarm_status[sto_no] = 0;
			if (!storageAllgood (sto_no))
			{
				beep_status[sto_no] = 0;
				p->buzzer_status = 0;	
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
			}
		}
	}

	if (0 == ill_alarm_status[sto_no])
	{
		if(p->illumination !=0)
		{
				if (p->illumination > p->illuminationMAX)
				{
					sendMsgQueue (MSG_LED, MSG_LED_ILL_ON);
					sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);
					p->led_status = 0;
					ill_alarm_status[sto_no] = 2;
					flag = 1;
				}
				else if (p->illumination < p->illuminationMIN)
				{
					sendMsgQueue (MSG_LED, MSG_LED_ILL_ON);
					sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);//MSG_M0 transfer to M0
					p->led_status = 1;
					ill_alarm_status[sto_no] = 1;
					flag = 1;
				}

			if (flag)
				{
					pthread_mutex_lock (&mutex_sms);
					if (sto_no == 1)
						dev_sms_cmd = SMS_ILL |SMS_STRNO1;
					else
						dev_sms_cmd = SMS_ILL |SMS_STRNO2;
						pthread_mutex_unlock (&mutex_sms);
						pthread_cond_signal (&cond_sms);
						flag = 0;
					if (beep_status[sto_no] == 0)
					{
						beep_status[sto_no] = 1;
						sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
						p->buzzer_status=1;
					}
					if (a8_beep_status == 0)
						{
							a8_beep_status = 1;
							sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
						}
						
				}
		}
		else ;
	}
		else if (ill_alarm_status[sto_no])
		{   
			printf("esle ill_alaarm ****");
			if (p->illumination < p->illuminationMAX && p->illumination > p->illuminationMIN)
			{
				printf("12324 esle ill off");
				sendMsgQueue (MSG_LED, MSG_LED_ILL_OFF);
				sendMsgQueue (MSG_M0, MSG_M0_LED_OFF | sto_no << 6);
				p->led_status = 0;
				ill_alarm_status[sto_no] = 0;
				
				if (!storageAllgood (sto_no))
				{
					beep_status[sto_no] = 0;
					p->buzzer_status = 0;	
					sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
					a8_beep_status = 0;
					sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
				}
			}
		}
		
	if (0 == tri_alarm_status[sto_no]) // 判断是否有人闯入
	{
#if 0		
		if ((  p->y == 0 && p->z == 0) != 1)
		{
			if (p->x > 15 || p->y > 0 /*|| p->z > 90*/)
		{
			printf("*******gao***");
			sendMsgQueue (MSG_LED, MSG_LED_TRI_ON);
			sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);//MSG_M0 transfer to M0
			sendMsgQueue (MSG_CAMERA, 1);
			tri_alarm_status[sto_no] = 2;
			//sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
		
			flag = 1;
		}
		else if (p->x < -15 || p->y < -30 /*|| p->z < 50*/)
		{
			printf("&&&&&&tai di&&&&&&&&&&&");
			sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);//MSG_M0 transfer to M0
			sendMsgQueue (MSG_LED, MSG_LED_TRI_ON);
			tri_alarm_status[sto_no] = 1;

			//sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
			flag = 1;
		}

		if (flag)
		{
			printf("******BRM******");
			pthread_mutex_lock (&mutex_sms);
			if (sto_no == 1)
				dev_sms_cmd = SMS_BRE |SMS_STRNO1;
			else
				dev_sms_cmd = SMS_BRE |SMS_STRNO2;
			pthread_mutex_unlock (&mutex_sms);
			pthread_cond_signal (&cond_sms);
			flag = 0; 
		/*	if (beep_status[sto_no] == 0)
			{
				beep_status[sto_no] = 1;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
			}
			if (a8_beep_status == 0)
			{
				printf("*******a8******");
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}*/
			if (beep_status[sto_no] == 0)
			{
				beep_status[sto_no] = 1;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
				p->buzzer_status=1;
			}
			if (a8_beep_status == 0)
			{
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}

		}
	//	} 9_16

	else if(tri_alarm_status[sto_no] == 1||tri_alarm_status[sto_no]==2) //三轴警报标志位不正常,那么看看当前三轴是否正常.如果正常则恢复警报标志位
	{
		printf("*********else*********");
		if (((p->x < 15) && (p->x > -15)) && ((p->y < 0) && 
					(p->y > -34)) /*&& ((p->z < 90) && (p->z > 65))*/)
		{
		printf("*********sanzhu*********");
			sendMsgQueue (MSG_M0, MSG_M0_LED_OFF | sto_no << 6);
			sendMsgQueue (MSG_LED, MSG_LED_TRI_OFF);
		
			tri_alarm_status[sto_no] = 0;
	/*		if (storageAllgood (sto_no))
			{
				beep_status[sto_no] = 0;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
			}
	*/
		
			if (!storageAllgood (sto_no))
			{
				beep_status[sto_no] = 0;
				p->buzzer_status = 0;	
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
			}
		}
	}	
	} 
	else ;
#endif
}
	return 0;
}
/* 监测数据是否异常 */
int checkEnv (int sto_no, struct storage_info *p)
{
	char flag = 0;
	static char a8_beep_status = 0;

	printf("sto_no: %d\n", sto_no);
	if (0 == tem_alarm_status[sto_no-1])//温度警报标志正常,看看是否有不正常的温度
	{
		if (p->temperature > p->temperatureMAX)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_ON3 | sto_no << 6);
			p->fan_status = 3;
			tem_alarm_status[sto_no-1] = 2;
			flag = 1;
		}
		else if (p->temperature < p->temperatureMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			p->fan_status = 0;
			tem_alarm_status[sto_no-1] = 1;
			flag = 1;
		}

		if (flag)
		{
			pthread_mutex_lock (&mutex_sms);
			if (sto_no == 1)
				dev_sms_cmd = SMS_TEM |SMS_STRNO1;
			else
				dev_sms_cmd = SMS_TEM |SMS_STRNO2;
			pthread_mutex_unlock (&mutex_sms);
			pthread_cond_signal (&cond_sms);
			flag = 0;
			if (beep_status[sto_no-1] == 0)
			{
				beep_status[sto_no-1] = 1;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
			}
			if (a8_beep_status == 0)
			{
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}
		}
	}
	else //温度警报标志位不正常,那么看看当前的温度是否正常.如果正常则恢复警报标志位
	{
		if (p->temperature < p->temperatureMAX && p->temperature > p->temperatureMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_OFF);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			p->fan_status = 0;
			tem_alarm_status[sto_no-1] = 0;
			if (storageAllgood (sto_no-1))
			{
				beep_status[sto_no-1] = 0;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
			}
		}
	}

	if (0 == hum_alarm_status[sto_no-1])//湿度,同上
	{
		if (p->humidity > p->humidityMAX)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_ON3 | sto_no << 6);
			p->fan_status = 3;
			hum_alarm_status[sto_no-1] = 2;
			flag = 1;
		}
		else if (p->humidity < p->humidityMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			p->fan_status = 0;
			hum_alarm_status[sto_no-1] = 1;
			flag = 1;
		}

		if (flag)
		{
			pthread_mutex_lock (&mutex_sms);
			if(sto_no == 1)
				dev_sms_cmd = SMS_HUM|SMS_STRNO1;
			else
				dev_sms_cmd = SMS_HUM|SMS_STRNO2;
			pthread_mutex_unlock (&mutex_sms);
			pthread_cond_signal (&cond_sms);
			flag = 0;
			if (beep_status[sto_no-1] == 0)
			{
				beep_status[sto_no-1] = 1;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
			}
			if (a8_beep_status == 0)
			{
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}

		}
	}
	else//湿度,同上
	{
		if (p->humidity < p->humidityMAX && p->humidity > p->humidityMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_OFF);
			sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
			p->fan_status = 0;
			hum_alarm_status[sto_no-1] = 0;
			if (storageAllgood (sto_no-1))
			{
				beep_status[sto_no-1] = 0;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);

			}
		}
	}

	if (0 == ill_alarm_status[sto_no-1])//光照标志 ,同上
	{
		if (p->illumination > p->illuminationMAX)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			sendMsgQueue (MSG_M0, MSG_M0_LED_OFF | sto_no << 6);
			p->led_status = 0;
			ill_alarm_status[sto_no-1] = 2;
			flag = 1;
		}
		else if (p->illumination < p->illuminationMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			sendMsgQueue (MSG_M0, MSG_M0_LED_ON | sto_no << 6);
			p->led_status = 1;
			ill_alarm_status[sto_no-1] = 1;
			flag = 1;
		}

		if (flag)
		{
			pthread_mutex_lock (&mutex_sms);
			if(sto_no == 1)
				dev_sms_cmd = SMS_ILL|SMS_STRNO1;
			else
				dev_sms_cmd = SMS_ILL|SMS_STRNO2;
		
			pthread_mutex_unlock (&mutex_sms);
			pthread_cond_signal (&cond_sms);
			flag = 0;
			if (beep_status[sto_no-1] == 0)
			{
				beep_status[sto_no-1] = 1;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
			}
			if (a8_beep_status == 0)
			{
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}
		}
	}
	else if (ill_alarm_status[sto_no-1])//光照,同上
	{
		if (p->illumination < p->illuminationMAX && p->illumination > p->illuminationMIN)
		{
			sendMsgQueue (MSG_LED, MSG_LED_OFF);
			sendMsgQueue (MSG_M0, MSG_M0_LED_OFF | sto_no << 6);
			p->led_status = 0;
			ill_alarm_status[sto_no-1] = 0;
			if (storageAllgood (sto_no-1))
			{
				beep_status[sto_no-1] = 0;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
			}
		}
	}

	if (0 == tri_alarm_status[sto_no-1]) // 判断是否有人闯入
	{
		if (p->x > THRESHOD || p->y > THRESHOD || p->z >THRESHOD)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			sendMsgQueue (MSG_CAMERA, 1);
			//sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
		
			flag = 1;
		}
		else if (p->x < -THRESHOD || p->y < -THRESHOD || p->z < -THRESHOD)
		{
			sendMsgQueue (MSG_LED, MSG_LED_ON);
			//sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
			flag = 1;
		}

		if (flag)
		{
			pthread_mutex_lock (&mutex_sms);
			if (sto_no == 1)
				dev_sms_cmd = SMS_BRE |SMS_STRNO1;
			else
				dev_sms_cmd = SMS_BRE |SMS_STRNO2;
			pthread_mutex_unlock (&mutex_sms);
			pthread_cond_signal (&cond_sms);
			flag = 0;
			if (beep_status[sto_no-1] == 0)
			{
				beep_status[sto_no-1] = 1;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_ON | sto_no << 6);
			}
			if (a8_beep_status == 0)
			{
				a8_beep_status = 1;
				sendMsgQueue (MSG_BEEP, MSG_M0_BEEP_ON);	
			}
		}
	}
	else //三轴警报标志位不正常,那么看看当前三轴是否正常.如果正常则恢复警报标志位
	{
		if (((p->x < THRESHOD) && (p->x > -THRESHOD)) && ((p->y < THRESHOD) && 
					(p->y > -THRESHOD)) && ((p->z < THRESHOD) && (p->z > -THRESHOD)))
		{
			sendMsgQueue (MSG_LED, MSG_LED_OFF);
			//sendMsgQueue (MSG_M0, MSG_M0_FAN_OFF | sto_no << 6);
		
			tri_alarm_status[sto_no-1] = 0;
			if (storageAllgood (sto_no-1))
			{
				beep_status[sto_no-1] = 0;
				sendMsgQueue (MSG_M0, MSG_M0_BEEP_OFF | sto_no << 6);
				a8_beep_status = 0;
				sendMsgQueue (MSG_BEEP, MSG_BEEP_OFF);
			}
		}
	}


	return 0;
}