Beispiel #1
0
int ReadAndSetButtonSettings(ButtonSettings *buttonSettings)
{
	BYTE *ptr;
	char result = -1;

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"host");
	if (ptr)
	{
		strcpy((char *)&(buttonSettings->itemUpdateHost), (char *)ptr);
		result = 0;
	}

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"port");
	if (ptr)
	{
		strcpy((char *)&(buttonSettings->itemUpdatePort), (char *)ptr);
		result = 0;
	}

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"method");
	if (ptr)
	{
		strcpy((char *)&(buttonSettings->itemUpdateMethod), (char *)ptr);
		result = 0;
	}

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"url");
	if (ptr)
	{
		strcpy((char *)&(buttonSettings->itemUpdateUrl), (char *)ptr);
		result = 0;
	}
	
	return result;
}
Beispiel #2
0
void HTTPPrint_channelNo(void)
{
	BYTE *ptr;
	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"channelNo");		

	if (ptr)
		TCPPutString(sktHTTP, ptr);
	else
		TCPPutROMString(sktHTTP, NOT_DEF_STR);
}
Beispiel #3
0
int GetChannelNo(void)
{
	BYTE *ptr;
	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"channelNo");		

	if (!ptr)
		return 0;
	
	int channelNo = atoi((char *)ptr);

	if (channelNo > 0 && channelNo <= NUM_OF_CHANNELS)
		return channelNo;

	return 0;
}
Beispiel #4
0
/* 
 * Reads the position parameter from url parameter 
 * Negative value means a wrong argument - returns -1
 */
int ReadPositionParameter()
{
	BYTE *ptr;
	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"position");
	if (!ptr)
	{
		return -1;
	}
	int position = atoi((char *)ptr);
	if (position < 0)
	{
		return -1;
	}
	
	return position;
}
Beispiel #5
0
void ProcessUpgradeCommand()
{
	BYTE *ptr;
	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"address");
	strcpypgm2ram((char *)&firmwareUpgradeStatus.address, (char *)ptr);

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"port");
	strcpypgm2ram((char *)&firmwareUpgradeStatus.port, (char *)ptr);

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"username");
	strcpypgm2ram((char *)&firmwareUpgradeStatus.username, (char *)ptr);

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"password");
	strcpypgm2ram((char *)&firmwareUpgradeStatus.password, (char *)ptr);

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"file");
	strcpypgm2ram((char *)&firmwareUpgradeStatus.file, (char *)ptr);

	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"md5");
	strcpypgm2ram((char *)&firmwareUpgradeStatus.md5, (char *)ptr);
	
	firmwareUpgradeStatus.active = 1;
}
/*****************************************************************************
  Function:
	HTTP_IO_RESULT HTTPExecuteGet(void)
	
  Internal:
  	See documentation in the TCP/IP Stack API or HTTP2.h for details.
  ***************************************************************************/
HTTP_IO_RESULT HTTPExecuteGet(void)
{
	BYTE *ptr;
	BYTE filename[20];
	
	// Load the file name
	// Make sure BYTE filename[] above is large enough for your longest name
	MPFSGetFilename(curHTTP.file, filename, 20);

    /******************************************/
	// If it's the leds.cgi LED update file
    /******************************************/
	if(!memcmppgm2ram(filename, "leds.cgi", 8))
	{
		// Determine which LED to toggle
		ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"led");
		
		// Toggle the specified LED
		switch(*ptr)
        {
			case '1':
				LED1_INV();
				break;
			case '2':
				LED2_INV();
				break;
            default:
                break;
		}
		
	}
    /******************************************/
    // If it's the wifi.xml scan file
    /******************************************/
    if(!memcmppgm2ram(filename, "wifi.xml", 8))
	{
		ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"scan");

		if (ptr != NULL)
		{
            if(IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
                return HTTP_IO_WAITING;

            if(IS_SCAN_STATE_DISPLAY(SCANCXT.scanState))
                return HTTP_IO_DONE;

			// Start Scan Request
        	if (WFStartScan() == WF_SUCCESS)
	    	{
            	SCAN_SET_DISPLAY(SCANCXT.scanState);
            	SCANCXT.displayIdx = 0;
                return HTTP_IO_WAITING;
        	}
		}
	}
	else
	{
        ;
	}		
	
	return HTTP_IO_DONE;
}
Beispiel #7
0
void ProcessOnOffCommand(int channelNo)
{
	BYTE *ptr;
	/* parameter command holds the requested action */
	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"command");
	if (!ptr)
		return;
		
	if (!memcmppgm2ram(ptr, "on", 2))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"on\0");
		channels[channelNo - 1].lastCommandStatus = OK;

		ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"value");
		int value = atoi((char *)ptr);
		if (value < 0 || value > 100)
		{
			return;
		}
		
		switch (channels[channelNo - 1].channelType)
		{
			case  ONOFF_COMMAND:
			case  ONOFF_PULSE:
				channels[channelNo - 1].channelStatus.onOffCommand.onOffState = ONOFF_ON;
				break;
			case ONOFF_W_KEY:
			case ONOFF_W_BUTTON:
				channels[channelNo - 1].channelStatus.onOff.channelStatus.state = ONOFF_ON;
				channels[channelNo - 1].channelStatus.onOff.channelStatus.currentValue = value;
				break;
			default:
				break;
		}
	}
	else if (!memcmppgm2ram(ptr, "off", 3))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"off\0");
		channels[channelNo - 1].lastCommandStatus = OK;

		switch (channels[channelNo - 1].channelType)
		{
			case  ONOFF_COMMAND:
			case  ONOFF_PULSE:
				channels[channelNo - 1].channelStatus.onOffCommand.onOffState = ONOFF_OFF;
				break;
			case ONOFF_W_KEY:
			case ONOFF_W_BUTTON:
				channels[channelNo - 1].channelStatus.onOff.channelStatus.state = ONOFF_OFF;
				break;
			default:
				break;
		}
	}
	else if (!memcmppgm2ram(ptr, "btn_set", 7))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"btn_set\0");
		
		int success = -1;
		
		switch (channels[channelNo - 1].channelType)
		{
			case ONOFF_BUTTON:
				success = ReadAndSetButtonSettings(&(channels[channelNo - 1].channelStatus.onOffButton.buttonStatus.buttonSettings));
				break;
			case ONOFF_W_KEY:
			case ONOFF_W_BUTTON:
				success = ReadAndSetButtonSettings(&(channels[channelNo - 1].channelStatus.onOff.channelStatus.buttonStatus.buttonSettings));
				break;
			default:
				break;
		}

		if (success == 0)
		{
			channels[channelNo - 1].lastCommandStatus = OK;
			SaveCalibrationStateToFlash();
		}
		else
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
		}
	}
	else
	{
		strncpy((char *)&channels[channelNo - 1].lastCommandName, (char *)ptr, 10);
		channels[channelNo - 1].lastCommandStatus = CMD_ERR;
	}
}
Beispiel #8
0
void ProcessBlindsCommand(int channelNo)
{
	BYTE *ptr;
	/* parameter command holds the requested action */
	ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"command");
	if (!ptr)
		return;

	if (!memcmppgm2ram(ptr, "move", 4))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"move\0");
		
		ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"position");
		if (!ptr)
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
			return;
		}
		int position = atoi((char *)ptr);
		if (position < 0 || position > 100)
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
			return;
		}
		
		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = MOVE;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.targetPosition = ConvertTargetPositionFromPercent(channelNo, position);
	}		
	else if (!memcmppgm2ram(ptr, "up", 2))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"up\0");
		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = MOVE;
		if (GetCurrentPositionInPercent(channelNo) == 100)
			channels[channelNo - 1].channelStatus.blinds.channelStatus.targetPosition = ConvertTargetPositionFromPercent(channelNo, 99);
		else
			channels[channelNo - 1].channelStatus.blinds.channelStatus.targetPosition = ConvertTargetPositionFromPercent(channelNo, 0);
	}
	else if (!memcmppgm2ram(ptr, "down", 4))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"down\0");
		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = MOVE;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.targetPosition = ConvertTargetPositionFromPercent(channelNo, 100);
	}
	else if (!memcmppgm2ram(ptr, "stop", 4))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"stop\0");
		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = STOPPED;
	}
	else if (!memcmppgm2ram(ptr, "zero_cal", 8))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"zero_cal\0");
		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = MOVE_ZERO_CAL;
	}
	else if (!memcmppgm2ram(ptr, "max_cal", 7))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"max_cal\0");
		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = MOVE_MAX_CAL;
	}
	else if (!memcmppgm2ram(ptr, "set_max_pos", 11))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"set_max_pos\0");

		/* read argument value from position paramenter */
		int position = ReadPositionParameter();
		if (position < 0)
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
			return;
		}

		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.calibrationStatus.maxOpenStatus = CALIBRATED;
		channels[channelNo - 1].channelStatus.blinds.calibrationStatus.maxOpenPosition = position;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = STOPPED;

		SaveCalibrationStateToFlash();
	}
	else if (!memcmppgm2ram(ptr, "set_part_pos", 12))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"set_part_pos\0");

		/* read argument value from position paramenter */
		int position = ReadPositionParameter();
		if (position < 0)
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
			return;
		}

		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.calibrationStatus.partOpenStatus = CALIBRATED;
		channels[channelNo - 1].channelStatus.blinds.calibrationStatus.partOpenPosition = position;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = STOPPED;

		SaveCalibrationStateToFlash();
	}
	else if (!memcmppgm2ram(ptr, "set_cur_pos", 11))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"set_cur_pos\0");

		/* read argument value from position paramenter */
		int position = ReadPositionParameter();
		if (position < 0)
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
			return;
		}

		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.currentPosition = position;
		channels[channelNo - 1].channelStatus.blinds.channelStatus.state = STOPPED;
	}
	else if (!memcmppgm2ram(ptr, "set_power", 9))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"set_power\0");
		int power = ReadPowerParameter();
		if (power < 0)
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
			return;
		}

		channels[channelNo - 1].lastCommandStatus = OK;
		channels[channelNo - 1].channelPower = power;

		SaveCalibrationStateToFlash();
	}
	else if (!memcmppgm2ram(ptr, "up_btn_set", 10))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"up_btn_set\0");
		int success = ReadAndSetButtonSettings(&(channels[channelNo - 1].channelStatus.blinds.channelStatus.buttonUpStatus.buttonSettings));

		if (success == 0)
		{
			channels[channelNo - 1].lastCommandStatus = OK;
			SaveCalibrationStateToFlash();
		}
		else
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
		}
	}
	else if (!memcmppgm2ram(ptr, "down_btn_set", 12))
	{
		strcpypgm2ram((char *)&channels[channelNo - 1].lastCommandName, (ROM char*)"down_btn_set\0");
		int success = ReadAndSetButtonSettings(&(channels[channelNo - 1].channelStatus.blinds.channelStatus.buttonDownStatus.buttonSettings));

		if (success == 0)
		{
			channels[channelNo - 1].lastCommandStatus = OK;
			SaveCalibrationStateToFlash();
		}
		else
		{
			channels[channelNo - 1].lastCommandStatus = ARG_ERR;
		}
	}
	else
	{
		strncpy((char *)&channels[channelNo - 1].lastCommandName, (char *)ptr, 10);
		channels[channelNo - 1].lastCommandStatus = CMD_ERR;
	}
}