コード例 #1
0
/* --------------------------------------------------------------------------*/
int player_send_message(int pid, player_cmd_t *cmd)
{
    player_cmd_t *mycmd;
    int r = -1;
    play_para_t *player_para;
    char buf[512];

    player_para = player_open_pid_data(pid);
    if (player_para == NULL) {
        return PLAYER_NOT_VALID_PID;
    }

    if (player_get_state(pid) == PLAYER_EXIT) {
        player_close_pid_data(pid);
        return PLAYER_SUCCESS;
    }

    mycmd = message_alloc();
    if (mycmd) {
        memcpy(mycmd, cmd, sizeof(*cmd));
        r = send_message_by_pid(pid, mycmd);
        if (cmd2str(cmd, buf) != -1) {
            log_print("[%s]cmd = %s\n", __FUNCTION__, buf);
        }
    } else {
        r = PLAYER_NOMEM;
    }
    player_close_pid_data(pid);
    return r;
}
コード例 #2
0
ファイル: Plugin_098.c プロジェクト: ESP8266nu/NodoClassic
boolean Plugin_098(byte function, struct NodoEventStruct *event, char *string)
{
  boolean success=false;

  switch(function)
  {
#ifdef PLUGIN_098_CORE

  #if NODO_MEGA
  case PLUGIN_COMMAND:
    {
					  // Par 1 ='command/type'
      byte Par2=event->Par2 & 0xff;	  // Par 2 = Variabel nr or 0=Off, 1=On 
      byte Par3=event->Par2>>8 & 0xff; 	  // Par 3 = sensortype
      byte Par4=event->Par2>>16 & 0xffff; // Par 4 = IDX

      byte x;
      char *HttpRequest=(char*)malloc(INPUT_LINE_SIZE+1);

      if (event->Par1 == CMD_VARIABLE_SEND)
        {
          if (Par3 == 1)			// Single value Sensor
            {
              strcpy(HttpRequest,"/json.htm?type=command&param=udevice&idx=");
              strcat(HttpRequest,int2str(Par4));
              strcat(HttpRequest,"&nvalue=0&svalue=");
              //strcat(HttpRequest,int2str(UserVar[Par2-1]));
              dtostrf(UserVar[Par2-1], 0, 2,HttpRequest+strlen(HttpRequest));
            }

          if (Par3 == 10)		// switch
            {
              strcpy(HttpRequest,"/json.htm?type=command&param=switchlight&idx=");
              strcat(HttpRequest,int2str(Par4));
              strcat(HttpRequest,"&switchcmd=");
              if (Par3==1)
                strcat(HttpRequest,"On");
              else
                strcat(HttpRequest,"Off");
              strcat(HttpRequest,"&level=0");
            }

        }

      if (event->Par1 == CMD_VARIABLE_GET)
        {
          if (Par3 == 1)			// Get Sensor Data
            {
              strcpy(HttpRequest,"/json.htm?type=devices&rid=");
              strcat(HttpRequest,int2str(Par4));
            }
        }

      x=P098SendCustomHTTPRequest(HttpRequest,PLUGIN_098_IP,PLUGIN_098_PORT,Par2);
      free(HttpRequest);

      success=true;
      break;
     }
  #endif

#endif // PLUGIN_098_CORE

   #if NODO_MEGA
   case PLUGIN_MMI_IN:
     {
     char *TempStr=(char*)malloc(INPUT_COMMAND_SIZE);
     if(GetArgv(string,TempStr,1))
       {
       if(strcasecmp(TempStr,PLUGIN_NAME)==0)
         {
           if(GetArgv(string,TempStr,3))
               event->Par2=str2int(TempStr);

           if(GetArgv(string,TempStr,4))
               event->Par2|=str2int(TempStr)<<8;

           if(GetArgv(string,TempStr,5))
               event->Par2|=str2int(TempStr)<<16;

           event->Type = NODO_TYPE_PLUGIN_COMMAND;
           event->Command = PLUGIN_ID; // Plugin nummer  
           success=true;
         }
       }
     free(TempStr);
     break;
     }

   case PLUGIN_MMI_OUT:
     {
     strcpy(string,PLUGIN_NAME);            // Eerste argument=het commando deel
     strcat(string," ");
     strcat(string,cmd2str(event->Par1));
     strcat(string,",");
     strcat(string,int2str(event->Par2 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>8 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>16 & 0xffff));
     break;
     }
   #endif //NODO_MEGA

  }

  return success;
}