Esempio n. 1
0
rpacket_t rpk_create_by_other(struct packet *p)
{
    if(MSG_TYPE(p) == MSG_RPACKET)
		return rpk_create_by_rpacket((rpacket_t)p);
    else if(MSG_TYPE(p) == MSG_WPACKET)
		return rpk_create_by_wpacket((wpacket_t)p);
	return NULL;
}
Esempio n. 2
0
static int setdir_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){

    int res = -1;
    char cmd[1024],basebool;
    utab_t *utab;
    char *mode[] ={
        "snb","swb","dnb","swb"
    };

    if(!msg_data || !pMsgHead) return ERR;
    if(pMsgHead->msg_type != MSG_TYPE(CATEGORY_CONFIG,DIRSET)){
        logi("msg_type(A%d,%d) wrong\n",MSG_CATEGORY(pMsgHead->msg_type),
                MSG_OPCODE(pMsgHead->msg_type));
        return -1;
    }
    utab = (utab_t*)msg_data;
    basebool = utab->baseline == 0.0 ? 0 : 1;
    if(basebool) sprintf(cmd,"set %s %f\r\n",mode[utab->type+basebool],utab->baseline);
    else         sprintf(cmd,"set %s\r\n",mode[utab->type+basebool]);
    if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
         logi("write error");
         return -1;
    }
    
    return OK;
}
Esempio n. 3
0
static int setrov_fun( int sockfd, msg_head_t *pMsgHead, char *msg_data )
{
    printf("setrov\n");
    int res = -1;
    char *cmd = "fix none\r\n";

	if ( !pMsgHead )
	{
		return ERR;
	}

	if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_CONFIG,SETROV) )
	{
		logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                    MSG_OPCODE( pMsgHead->msg_type ) );
		return ERR;
	}

      if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
          logi("write error");
          return ERR;
      }
    
//      cmd_response_massage(sockfd,pMsgHead,"ok",strlen("ok"));
#if 0
      printf("setrov successfully\n");
#endif
	return OK;
}
Esempio n. 4
0
static void
process_interrupt_messages (void)
{
  /* Reads all of the interrupts out of the interrupt queue, and sets
     the corresponding bits in the interrupt word.  */
  while (1)
    {
      msg_t * message = (read_subqueue (OS2_interrupt_qid_local));
      if (message == 0)
	break;
      switch (MSG_TYPE (message))
	{
	case mt_console_interrupt:
	  tty_set_next_interrupt_char (SM_CONSOLE_INTERRUPT_CODE (message));
	  break;
	case mt_timer_event:
	  request_timer_interrupt ();
	  break;
	default:
	  OS2_logic_error ("Illegal message type in interrupt queue.");
	  break;
	}
      OS2_destroy_message (message);
    }
}
Esempio n. 5
0
static int state_fun( int sockfd, msg_head_t *pMsgHead, char *msg_data )
{
    int res = -1;
    char *cmd = "log oemstatus ontime 1\r\n";
#if 0
    struct tm *timer;
#endif

	if ( !pMsgHead )
	{
		return ERR;
	}

	if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_GUIDE,STATE ) )
	{
		logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                    MSG_OPCODE( pMsgHead->msg_type ) );
		return ERR;
	}

      if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
          logi("write error");
          return ERR;
      }

      pthread_mutex_lock(&lock);
      msg_head[0] = *pMsgHead;
      sock = sockfd;
      pthread_mutex_unlock(&lock);

	return OK;
}
Esempio n. 6
0
static inline rpacket_t rpk_create_by_wpacket(struct wpacket *w)
{
	rpacket_t r = (rpacket_t)ALLOC(rpacket_allocator,sizeof(*r));
	r->binbuf = NULL;
	r->binbufpos = 0;
    PACKET_BUF(r) = buffer_acquire(NULL,PACKET_BUF(w));
    r->readbuf = buffer_acquire(NULL,PACKET_BUF(w));
    PACKET_BEGINPOS(r) = PACKET_BEGINPOS(w);
    MSG_NEXT(r) = NULL;
    MSG_TYPE(r) = MSG_RPACKET;
    PACKET_RAW(r) = PACKET_RAW(w);
    if(PACKET_RAW(r))
	{
		r->len = w->data_size;
        r->rpos =PACKET_BEGINPOS(w);
	}
	else
	{
		//这里的len只记录构造时wpacket的len,之后wpacket的写入不会影响到rpacket的len
		r->len = w->data_size - sizeof(r->len);
        r->rpos = (PACKET_BEGINPOS(r) + sizeof(r->len))%PACKET_BUF(r)->capacity;
        if(r->rpos < PACKET_BEGINPOS(r))//base->begin_pos)
			r->readbuf = buffer_acquire(r->readbuf,r->readbuf->next);
	}
	r->data_remain = r->len;
	return r;
}
Esempio n. 7
0
static int action_fun( int sockfd, msg_head_t *pMsgHead, char *msg_data )
{
    int res = -1;
    char *cmd = "log satinfo ontime 1\r\n";

	if ( !pMsgHead )
	{
		return ERR;
	}

	if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_GUIDE,ACTION) )
	{
		logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                    MSG_OPCODE( pMsgHead->msg_type ) );
		return ERR;
	}

      if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
          logi("write error");
          return ERR;
      }

      pthread_mutex_lock(&lock);
      msg_head[1] = *pMsgHead;
      sock = sockfd;
      pthread_mutex_unlock(&lock);

	return OK;
}
Esempio n. 8
0
rpacket_t rpk_create_skip(rpacket_t other,uint32_t skipsize)
{
    if(!other || PACKET_RAW(other) || other->len <= skipsize)
        return NULL;
    rpacket_t r = (rpacket_t)ALLOC(rpacket_allocator,sizeof(*r));
    PACKET_RAW(r) = 0;
    //首先要到正确的读位置
    uint32_t move_size = skipsize+sizeof(r->len);
    buffer_t buf = PACKET_BUF(other);
    uint32_t pos = PACKET_BEGINPOS(other);
    while(move_size){
        uint32_t s = buf->size - pos;
        if(s > move_size) s = move_size;
        move_size -= s;
        pos += s;
        if(pos >= buf->size){
            buf = buf->next;
            pos = 0;
        }
    }

    r->binbuf = NULL;
    r->binbufpos = 0;
    PACKET_BUF(r) = buffer_acquire(NULL,buf);
    r->readbuf = buffer_acquire(NULL,buf);
    r->len = other->len-skipsize;
    r->data_remain = r->len;
    r->rpos = PACKET_BEGINPOS(r) = pos;
    MSG_NEXT(r) = NULL;
    MSG_TYPE(r) = MSG_RPACKET;
    return r;
}
Esempio n. 9
0
rpacket_t rpk_create(buffer_t b,
                     uint32_t pos,
                     uint32_t pk_len,
                     uint8_t is_raw)
{
	rpacket_t r = (rpacket_t)ALLOC(rpacket_allocator,sizeof(*r));
	struct packet *base = (struct packet*)r;
	r->binbuf = NULL;
	r->binbufpos = 0;
    PACKET_BUF(r) = buffer_acquire(NULL,b);
	r->readbuf = buffer_acquire(NULL,b);
	r->len = pk_len;
	r->data_remain = r->len;
    PACKET_BEGINPOS(r) = pos;
    MSG_NEXT(r) = NULL;
    MSG_TYPE(r) = MSG_RPACKET;
	if(is_raw)
		r->rpos = pos;
	else
		r->rpos = (pos + sizeof(r->len))%base->buf->capacity;
	if(r->rpos < base->begin_pos)
		r->readbuf = buffer_acquire(r->readbuf,r->readbuf->next);

	base->raw = is_raw;
	return r;
}
Esempio n. 10
0
msg_t *
OS2_wait_for_message (qid_t qid, msg_type_t reply_type)
{
  msg_t * reply = (OS2_receive_message (qid, 1, 0));
  if (OS2_error_message_p (reply))
    OS2_handle_error_message (reply);
  if ((MSG_TYPE (reply)) != reply_type)
    OS2_logic_error ("Incorrect reply message type.");
  return (reply);
}
Esempio n. 11
0
static int setio_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){
    
    int res = -1,i,cmdn = 0;
    char cmd[10][1024];
    data_t *data;
    char *raw[4][10] = {
        { "ranged","gpsephemb","bdsephemb","gloephemb"},
        { "rtcm1033","rtcm1005","rtcm1006","rtcm1004b", 
            "rtcm1104b","rtcm1012b" },
        { "rtcm1033","rtcm1005","rtcm1006","rtcm1074b",
            "rtcm1124b","rtcm1084b" },
        { "gpgga","gpgsv","gprmc","gpgsr","gpgsa",
            "gputa","gpgll","gpzda","gpvtg","gpgst"}
    };
#if 0
    char buff[1024]; int len;
#endif

    if(!msg_data || !pMsgHead) return ERR;
    if(pMsgHead->msg_type != MSG_TYPE(CATEGORY_CONFIG,IOSET)){
        logi("msg_type(A%d,%d) wrong\n",MSG_CATEGORY(pMsgHead->msg_type),
                MSG_OPCODE(pMsgHead->msg_type));
        return -1;
    }
    
    data = (data_t*)msg_data;
    if(data->clientbool){
        sprintf(cmd[0],"setclient %s\r\n",data->ipport);
        if((res = write(cmdfd,cmd[0],strlen(cmd[0]))) == -1){
          logi("write error");
          return -1;
        }

    }

    for(i = 0;i < 10;i++) 
        if(data->datatime[i] != 0)
           sprintf(cmd[cmdn++],"log %s ontime %f\r\n",raw[(int)data->datatype][i],
                data->datatime[i]);


   for(i = 0;i < cmdn;i++)
       if((res = write(cmdfd,cmd[i],strlen(cmd[i]))) == -1){
          logi("write error");
          return -1;
       }

#if 0
   while((len=read(profd,buff,1024)) > 0){
       buff[len] = '\0';
       printf("%s\n",buff);
   }
#endif
    return OK;
}
Esempio n. 12
0
void Connector::messageReceived( util::Buffer *m ) {
    util::BYTE type = MSG_TYPE(m->buffer());

	//  printf( "[Connector (%p)] Received a message: type=%d\n", this, type );
    
    Handlers::iterator cb = _handlers.find( (messages::type)type );
    if (cb != _handlers.end()) {
		//printf( "[Connector (%p)] Dispatching to handler\n", this );
		(*cb).second->process( m );
	} else {
	    printf( "[Connector (%p)] Warning: Received unhandled message type: type=%02x\n", this, type );
    }
}
Esempio n. 13
0
static int setchannel_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){

    int res = -1,i;
    char cmd[1024],*s;
    char *fre[8] = {
        "L1","L2","L3","B1","B2","B3","GL1","GL2"
    },*sys[] = {
        "gps","gln","gal","bds","sbas"
    };
    channelset_t *channelset;
    if(!msg_data || !pMsgHead) return ERR;
    if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_CONFIG,CHANNELSET) ){
        logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                       MSG_OPCODE( pMsgHead->msg_type ) );
        return ERR;
    }
    channelset = (channelset_t *)msg_data;
    for(i = 0;i < 5;i++) if(channelset->closesys[i] != 0){
        s = channelset->closesys[i] == 1 ? "closesys" : "unclosesys";
        sprintf(cmd,"%s %s\r\n",s,sys[i]);
        if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
             logi("write error");
             return ERR;
        }
    }
    for(i = 0;i < 8;i++)
        if(channelset->closefre[i] != 0){
            s =channelset->closefre[i] == 1 ? "close" : "unclose";
            sprintf(cmd,"%s %s\r\n",s,fre[i]);
            if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
                 logi("write error");
                 return ERR;
            }
        }
    for(i = 0;i < MAXPIPE;i++)
        if(channelset->channel[i] != 0){
            s =channelset->channel[i] == 1 ? "close" : "unclose";
            sprintf(cmd,"%s %d\r\n",s,i);
            if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
                 logi("write error");
                 return ERR;
            }
        }

    return OK;

}
Esempio n. 14
0
static inline rpacket_t rpk_create_by_rpacket(rpacket_t other)
{
	rpacket_t r = (rpacket_t)ALLOC(rpacket_allocator,sizeof(*r));
    r->binbuf = NULL;
	r->binbufpos = 0;
    PACKET_BUF(r) = buffer_acquire(NULL,PACKET_BUF(other));
	r->readbuf = buffer_acquire(NULL,other->readbuf);
	r->len = other->len;
    r->data_remain = other->data_remain;
    PACKET_BEGINPOS(r) = PACKET_BEGINPOS(other);
    MSG_NEXT(r) = NULL;
    MSG_TYPE(r) = MSG_RPACKET;
    PACKET_RAW(r) = PACKET_RAW(other);

	r->rpos = other->rpos;
	return r;
}
Esempio n. 15
0
msg_t *
OS2_create_message_1 (msg_type_t type, msg_length_t extra)
{
  /* Do allocation carefully to prevent infinite loop when signalling
     "out of memory" condition.  */
  msg_t * message =
    (OS2_malloc_noerror (((unsigned long) (OS2_message_type_length (type)))
			 + extra));
  if (message == 0)
    if ((type == mt_syscall_error)
	&& ((SM_SYSCALL_ERROR_CODE (message)) == ERROR_NOT_ENOUGH_MEMORY)
	&& ((SM_SYSCALL_ERROR_NAME (message)) == syscall_malloc))
      OS2_logic_error ("Unable to allocate memory for error message.");
    else
      OS2_error_system_call (ERROR_NOT_ENOUGH_MEMORY, syscall_malloc);
  (MSG_TYPE (message)) = type;
  return (message);
}
Esempio n. 16
0
int demo_get_password_fun( int sockfd, msg_head_t *pMsgHead, char *msg_data )
{
	if ( !pMsgHead )
	{
		return ERR;
	}

	if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_DEMO, OP_CODE_DEMO__GET_PASSWORD ) )
	{
		logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ),
                    MSG_OPCODE( pMsgHead->msg_type ) );
		return ERR;
	}

	logi( "get user( %s ) password now\n", msg_data );
	cmd_response_massage( sockfd, pMsgHead, "ok", strlen( "ok" ) );

	return OK;
}
Esempio n. 17
0
static int setele_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){

    int res = -1;
    char cmd[1024];
    float *data;

    if(!msg_data || !pMsgHead) return ERR;
    if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_CONFIG,ELESET) ){
        logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                       MSG_OPCODE( pMsgHead->msg_type ) );
        return ERR;
    }
    data = (float*)msg_data;
    sprintf(cmd,"ecutoff %f\r\n",*data);
    if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
         logi("write error");
         return ERR;
    }

    return OK;
}
Esempio n. 18
0
static int setan_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){
    
    int res = -1;
    char cmd[1024],*s;

    if(!msg_data || !pMsgHead) return ERR;
    if(pMsgHead->msg_type != MSG_TYPE(CATEGORY_CONFIG,ANTNSET)){
        logi("msg_type(A%d,%d) wrong\n",MSG_CATEGORY(pMsgHead->msg_type),
                MSG_OPCODE(pMsgHead->msg_type));
        return -1;
    }
    
    s = *msg_data == 1 ? "antn1":"antn2";
    sprintf(cmd,"set %s\r\n",s);
    if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
         logi("write error");
         return -1;
    }
    
    return OK;
}
Esempio n. 19
0
static int setnet_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){

    int res = -1;
    char cmd[1024];
    net_t *net;

    if(!msg_data || !pMsgHead) return ERR;
    if(pMsgHead->msg_type != MSG_TYPE(CATEGORY_CONFIG,NETSET)){
        logi("msg_type(A%d,%d) wrong\n",MSG_CATEGORY(pMsgHead->msg_type),
                MSG_OPCODE(pMsgHead->msg_type));
        return -1;
    }
    net = (net_t*)msg_data;
    sprintf(cmd,"setip %s %s %s %s\r\n",net->ip,net->gateway,net->netmask,net->dns);
    if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
         logi("write error");
         return -1;
    }
    
    return OK;
}
Esempio n. 20
0
static int setsat_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){

    int res = -1,i,j;
    char cmd[1024],*s;
    locksat_t *locksat;
    char *sys[] = {
        "gps","gln","gal","bds","sbas"
    };

    if(!msg_data || !pMsgHead) return ERR;
    if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_CONFIG,SATSET) ){
        logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                       MSG_OPCODE( pMsgHead->msg_type ) );
        return ERR;
    }
    locksat = (locksat_t*)msg_data;
    for(i = 0;i < 5;i++) if(locksat->locksys[i] != 0){
        s = locksat->locksys[i] == 1 ? "lockout" : "unlockout";
        sprintf(cmd,"%s %s\r\n",s,sys[i]);
        if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
             logi("write error");
             return ERR;
        }
    }
    for(j = 0;j < 5;j++){
        for(i = 0;i < MAXSAT;i++)
            if(locksat->lockprn[j][i] != 0){
                s = locksat->lockprn[j][i] == 1 ? "lockout" : "unlockout";
                sprintf(cmd,"%s %s %d\r\n",s,sys[j],i);
                if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
                     logi("write error");
                     return ERR;
                }
            }
    }

    return OK;
}
Esempio n. 21
0
static int setbasepos_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){

    int res = -1;
    char cmd[1024];
    basepos_t *basepos;

    printf("set base pos\n");
    if(!msg_data || !pMsgHead) return ERR;
    if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_CONFIG,SETBASEPOS) ){
        logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                       MSG_OPCODE( pMsgHead->msg_type ) );
        return ERR;
    }

    basepos = (basepos_t*)msg_data;
    sprintf(cmd,"fix position %.9f %.9f %.4f\r\n",basepos->lat,basepos->lon,basepos->hgt);
    if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
         logi("write error");
         return ERR;
    }

    return OK;
}
Esempio n. 22
0
static int setengine_fun(int sockfd,msg_head_t *pMsgHead,char *msg_data){

    int res = -1;
    char cmd[1024];
    char *postype[] ={
        "single","rtk","sbasspp","sbasppp",
        "ssrspp","ssrppp"
    };

    if(!msg_data || !pMsgHead) return ERR;
    if ( pMsgHead->msg_type != MSG_TYPE( CATEGORY_CONFIG,ENGINESET) ){
        logi( "msg_type( %d, %d ) wrong\n", MSG_CATEGORY( pMsgHead->msg_type ), 
                       MSG_OPCODE( pMsgHead->msg_type ) );
        return ERR;
    }
    sprintf(cmd,"setpvt %s\\n",postype[(int)*msg_data]);
    if((res = write(cmdfd,cmd,strlen(cmd))) == -1){
         logi("write error");
         return ERR;
    }

    return OK;
}
Esempio n. 23
0
void dump_message(const HALMsg *msg, const char *prefix){
    if (current_log_level >= DUMP){
        if (prefix){
            fprintf(stderr, "%s", prefix);
        }

        fprintf(stderr, 
            "#%c%-3hhu: command=%02hhx, type=%c%c, rid=%hhu, len=%hhu chk=%d\n", 
            (IS_ARDUINO_SEQ(msg->seq) ? 'A' : 'D'),
            ABSOLUTE_SEQ(msg->seq),
            msg->cmd,
            MSG_TYPE(msg), MSG_IS_CHANGE(msg) ? '!' : '?',
            msg->rid,
            msg->len,
            msg->chk);
        
        for (int i=0; i<16 && 16*i<msg->len; i++){
            for (int j=0; j<16 && 16*i+j < msg->len; j++){
                fprintf(stderr, "  %02hhx", msg->data[16*i+j]);
            }
            fprintf(stderr, "\n");
        }
    }
}
Esempio n. 24
0
static AJ_Status ParseIsAt(AJ_IOBuffer* rxBuf, const char* prefix, AJ_Service* service)
{
    AJ_Status status = AJ_ERR_NO_MATCH;
    size_t preLen = strlen(prefix);
    NSHeader* hdr = (NSHeader*)rxBuf->readPtr;
    uint32_t len = AJ_IO_BUF_AVAIL(rxBuf);
    uint8_t* p = rxBuf->readPtr + 4;
    uint8_t* eod = (uint8_t*)hdr + len;

    AJ_InfoPrintf(("ParseIsAt(rxbuf=0x%p, prefix=\"%s\", service=0x%p)\n", rxBuf, prefix, service));

    service->addrTypes = 0;

    /*
     * Silently ignore versions we don't know how to parse
     */
    if (MSG_VERSION(hdr->version) != MSG_V1) {
        return status;
    }
    /*
     * Questions come in first - we currently ignore them
     */
    while (hdr->qCount--) {
        uint8_t flags = *p++;
        uint8_t nameCount = *p++;
        /*
         * Questions must be WHO_HAS messages
         */
        if (MSG_TYPE(flags) != WHO_HAS_MSG) {
            AJ_InfoPrintf(("ParseIsAt(): AJ_ERR_INVALID\n"));
            return AJ_ERR_INVALID;
        }
        while (nameCount--) {
            uint8_t sz = *p++;
            p += sz;
            if (p > eod) {
                AJ_InfoPrintf(("ParseIsAt(): AJ_ERR_END_OF_DATA\n"));
                status = AJ_ERR_END_OF_DATA;
                goto Exit;
            }
        }
    }
    /*
     * Now the answers - this is what we are looking for
     */
    while (hdr->aCount--) {
        uint8_t flags = *p++;
        uint8_t nameCount = *p++;
        /*
         * Answers must be IS_AT messages
         */
        if (MSG_TYPE(flags) != IS_AT_MSG) {
            AJ_InfoPrintf(("ParseIsAt(): AJ_ERR_INVALID\n"));
            return AJ_ERR_INVALID;
        }
        /*
         * Must be reliable IPV4 or IPV6
         */
        if (!(flags & (R4_FLAG | R6_FLAG))) {
            return status;
        }
        /*
         * Get transport mask
         */
        service->transportMask = (p[0] << 8) | p[1];
        p += 2;
        /*
         * Decode addresses
         */
        if (flags & R4_FLAG) {
            memcpy(&service->ipv4, p, sizeof(service->ipv4));
            p += sizeof(service->ipv4);
            service->ipv4port = (p[0] << 8) | p[1];
            p += 2;
            service->addrTypes |= AJ_ADDR_IPV4;
        }
        if (flags & U4_FLAG) {
            p += sizeof(service->ipv4) + 2;
        }
        if (flags & R6_FLAG) {
            memcpy(&service->ipv6, p, sizeof(service->ipv6));
            p += sizeof(service->ipv6);
            service->ipv6port = (p[0] << 8) | p[1];
            p += 2;
            service->addrTypes |= AJ_ADDR_IPV6;
        }
        if (flags & U6_FLAG) {
            p += sizeof(service->ipv6) + 2;
        }
        /*
         * Skip guid if it's present
         */
        if (flags & G_FLAG) {
            uint8_t sz = *p++;
            len -= 1 + sz;
            p += sz;
        }
        if (p >= eod) {
            AJ_InfoPrintf(("ParseIsAt(): AJ_ERR_END_OF_DATA\n"));
            return AJ_ERR_END_OF_DATA;
        }
        /*
         * Iterate over the names
         */
        while (nameCount--) {
            uint8_t sz = *p++;
            {
                char sav = p[sz];
                p[sz] = 0;
                AJ_InfoPrintf(("ParseIsAt(): Found \"%s\" IP 0x%x\n", p, service->addrTypes));
                p[sz] = sav;
            }
            if ((preLen <= sz) && (memcmp(p, prefix, preLen) == 0)) {
                status = AJ_OK;
                goto Exit;
            }
            p += sz;
            if (p > eod) {
                status = AJ_ERR_END_OF_DATA;
                AJ_InfoPrintf(("ParseIsAt(): AJ_ERR_END_OF_DATA\n"));
                goto Exit;
            }
        }
    }

Exit:
    return status;
}
Esempio n. 25
0
void demo_commands_init()
{

#if 1
    if(pthread_create(&tid,NULL,send2cgi,NULL) != 0){
        logi("create thread error!\n");
        exit(1);
    }
    pthread_mutex_init(&lock,NULL);
#endif

    register_msg_process_fun( MSG_TYPE( CATEGORY_DEMO, OP_CODE_DEMO__GET_PASSWORD ), 
            demo_get_password_fun  );
    register_msg_process_fun( MSG_TYPE( CATEGORY_GUIDE, STATE), 
            state_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_GUIDE, ACTION), 
            action_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_GUIDE, POSITION), 
            pos_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_GUIDE, TRACETABLE), 
            trace_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG, SETROV), 
            setrov_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG, SETBASEPOS), 
            setbasepos_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG, GETPOS), 
            getpos_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG, ENGINESET), 
            setengine_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG,ELESET), 
            setele_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG,SATSET), 
            setsat_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG,CHANNELSET), 
            setchannel_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG,NETSET), 
            setnet_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG,DIRSET), 
            setdir_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG,ANTNSET), 
            setan_fun);
    register_msg_process_fun( MSG_TYPE( CATEGORY_CONFIG,IOSET), 
            setio_fun);
}
Esempio n. 26
0
#include "lighttest2.h"
#include "../HALMsg.h"

TEST(checksum, {
    HALMsg msg;
    memset(&msg, 0, sizeof(msg));

    msg.cmd = VERSION;
    ASSERT(MSG_TYPE(&msg) == VERSION);
    ASSERT(! MSG_IS_CHANGE(&msg));
    ASSERT(HALMsg_checksum(&msg) == VERSION);

    msg.data[0] = 1;
    ASSERT(HALMsg_checksum(&msg) == VERSION); //len is zero -> dont check data

    msg.len = 1;
    ASSERT(HALMsg_checksum(&msg) == VERSION+2); //+len +data
})

SUITE(
    ADDTEST(checksum))