/*
*********************************************************************************************************
*                                           CloudData_Task()
*
* Description : Sends sensor data to the cloud
*
* Argument(s) : p_arg           Argument passed to 'CloudData_Task()' by 'OSTaskCreate()'.
*
* Return(s)   : none.
*
* Caller(s)   : This is a task.
*
* Note(s)     : none.
*********************************************************************************************************
*/
static void CloudData_Task (void *p_arg)
{
    OS_ERR       err;
    CPU_CHAR    *keys[1];
    CPU_CHAR    *values[1];
    CPU_CHAR     strping[4];
    CPU_CHAR     ping = 0;
    CPU_CHAR     ledctrl;
    CPU_CHAR     read_count = 0;
    CPU_BOOLEAN  cloud_available;
    CPU_CHAR     showMAC[18];

    (void)p_arg;

    keys[0] = "ping";
    values[0] = strping;

    // OS Name = "Micrium-Ex1" <- MAX Length = 24
    // OS Ver  = "3.01.2" <- MAX Length = 8
    // Use network interface '1' MAC address
    cloud_available = Exosite_Init("renesas", "Micrium-Ex7", "3.01.2", (NET_IF_NBR)1);
	
	lcd_display(LCD_LINE7, "            ");	
    lcd_display(LCD_LINE8, "            ");	
	if (Exosite_GetMAC(&showMAC[0]) && !DisableCloudStatus)
    {
        lcd_display(LCD_LINE6,(uint8_t *) showMAC);
    }
	
    OSTimeDlyHMSM((CPU_INT16U) 0u,
                  (CPU_INT16U) 0u,
                  (CPU_INT16U) 4u,
                  (CPU_INT32U) 0u,
                  (OS_OPT    ) OS_OPT_TIME_HMSM_NON_STRICT,
                  (OS_ERR   *)&err);

	lcd_display(LCD_LINE6, "            ");				  
	lcd_display(LCD_LINE7, "Cloud Status");

    while (DEF_TRUE)
    {
        if (DEF_TRUE != cloud_available)
        {
            UI_Update(MSG_UNAVAILABLE);

            // Sleep 20 seconds
            OSTimeDlyHMSM((CPU_INT16U)  0u,
                          (CPU_INT16U)  0u,
                          (CPU_INT16U) 20u,
                          (CPU_INT32U)  0u,
                          (OS_OPT    ) OS_OPT_TIME_HMSM_NON_STRICT,
                          (OS_ERR   *)&err);

            // Retry cloud activation until successful
            cloud_available = Exosite_Reinit();
        }
        else
        {
            if (read_count++ > 10) {
                read_count = 0;
                // Create string from ping value
                Str_FmtNbr_Int32U(ping++,
                                  3u,
                                  DEF_NBR_BASE_DEC,
                                  ASCII_CHAR_NULL,
                                  DEF_NO,
                                  DEF_YES,
                                 &strping[0]);

                if (DEF_TRUE != Exosite_Write_Batch(keys, values, 1))
                {
                    UI_Update(MSG_WRITE_ERROR);
                }
                else
                {
                    UI_Update(MSG_CONNECTED);
                }
            }

            if ((CPU_SIZE_T)1 == Exosite_Read("led_ctrl", &ledctrl, 1))
            {
                UI_Update(MSG_CONNECTED);
				ErrorCount = 0;
                
                if ('0' == ledctrl)
                {
                    AppCloudControlLedOn = 0;
                }
                if ('1' == ledctrl)
                {
                    AppCloudControlLedOn = 1;
                }
            } else {
				ErrorCount++;
				if (ErrorCount > 3)
			       UI_Update(MSG_READ_ERROR);
			}

            // Sleep 2 seconds
            OSTimeDlyHMSM((CPU_INT16U) 0u,
                          (CPU_INT16U) 0u,
                          (CPU_INT16U) 2u,
                          (CPU_INT32U) 0u,
                          (OS_OPT    ) OS_OPT_TIME_HMSM_NON_STRICT,
                          (OS_ERR   *)&err);
        }
    }
}
Пример #2
0
void Update(float msec)
{
	DMacro_TraceEnter(Update);

	DSys::Input::Update();

	AT_KEY_CHAR(DIK_F10) DSys::SendConsoleCommand("quit");
	
	AT_KEY_CHAR(DIK_ESCAPE)
		(void ( SceneMode == MODE_UI ? SceneMode = MODE_PLAYBACK : SceneMode = MODE_UI ) );

	if(SceneMode == MODE_PLAYBACK)
	{
		if(DSys::Input::KeyDown(DIK_LALT) || DSys::Input::KeyDown(DIK_RALT))
		{
			////////////////
			//************//
			//* ALT KEYS *//
			//************//
			////////////////
		}
		else
		{
			///////////////////
			//***************//
			//* NORMAL KEYS *//
			//***************//
			///////////////////

/*			if(!DSys::r_avi)
			{
				AT_KEY_CHAR(DIK_F12)	DSys::SendConsoleCommand("screenshot");
			}
			else
			{
				DSys::SendConsoleCommand("screenshot");
			}
*/		}
		// update the TD::gameServer
		TD::gameServer->update(msec);
	}
	else
	if( SceneMode == MODE_UI )
	{
		// user interface should think now
		UI_Update(msec);
	}

	///////////////////////
	//*******************//
	//* Non-Key Related *//
	//*******************//
	///////////////////////

	static float sceneTime;

	g_timeCounter += msec/50.0f;

	g_fadeIn.Update(msec);
	if(g_bQuitting)
		g_fadeOut.Update(msec);

	DMacro_TraceLeave();
}