int WebOsCalendarSyncSource::deleteItem(SyncItem &item)
{
	int ret = STC_COMMAND_FAILED;
	LOG.info("deleteItem called with %s data. And Type %s.",item.getKey(),item.getDataType());

	LOG.info("Calling deleteEvent.");
	std::vector<WString> result = BlockingServiceCall("deleteEvent",item.getKey());
	if(result.empty())
	{
		LOG.error("delete event %s did not work.",item.getKey());
		ret = STC_COMMAND_FAILED;
	}
	else
	{
		LOG.error("delete event was successful, received: %s.",result[0].c_str());
		ret = STC_OK;
	}

	if (isErrorCode(ret))
	{
		report->setLastErrorCode(ERR_ITEM_ERROR);
	    report->setLastErrorMsg(ERRMSG_ITEM_ERROR);
	    report->setState(SOURCE_ERROR);
	    LOG.debug("Error deleting item: %", item.getKey());
	}

	return ret;
}
Пример #2
0
int recvCPAPResponse( int io_fd , uint8_t *responseBuffer , int responseBufferLength , uint8_t cmd_byte , int expectedLength )
{
    int recv_size=0;
    int retry=10;
    int recv_return;
    uint8_t *x93_cmd=0;
    uint8_t *e5=0;
    uint8_t *e6=0;
    int valid_length=0;
    int index;
    uint8_t error_code=0;
    do
    {
        recv_return = CPAP_recv( io_fd , &responseBuffer[recv_size] , responseBufferLength-recv_size );

        recv_size += recv_return;

        if ( x93_cmd == 0 && e5 == 0 && e6 == 0 )
        {
            if ( responseBuffer[0] != 0xe5 && responseBuffer[0] != 0xe6 && isErrorCode( responseBuffer[0] ) )
            {
                valid_length=1;
                error_code=responseBuffer[0];
                break;
            }


            for( index=0 ; index<recv_size ; index++ )
            {
                if ((responseBuffer[index] == 0x93) && (responseBuffer[index+1] == cmd_byte) )
                {
                    x93_cmd = &responseBuffer[index];
                    printf_debug("find 0x93,0x%x at responseBuffer[%d]\n" , cmd_byte , ( x93_cmd - responseBuffer ) );
                    break;
                }
                else if ( responseBuffer[index] == 0xe5 )
                {
                    e5=&responseBuffer[index];
                    valid_length = 1;
                    printf_debug("get e5 at responseBuffer[%d]\n" , index );
                    break;
                }
                else if ( responseBuffer[index] == 0xe6 )
                {
                    e6=&responseBuffer[index];
                    valid_length = 1;
                    printf_debug("get e6 at responseBuffer[%d]\n" , index );
                    break;
                }
            }
        }
        else
            printf_debug("93=%p,e5=%p,e6=%p\n" , x93_cmd , e5 , e6 );

        if ( x93_cmd )
        {
            valid_length = recv_size - ( x93_cmd - responseBuffer );
            printf_debug("valid_length=%d\n" , valid_length );
        }

        if ( retry < 1 )
            printf_debug("remain %d bytes\n" , expectedLength-valid_length );

    }while( retry-- > 0 && valid_length < expectedLength );

    if ( recv_size <  0  )
    {
        printf_debug("recv error\n" );
        return READ_UART_ERROR;
    }
    else if ( retry < 0 )
    {
        printf_debug("cant find 0x93\n"  );
        return READ_NOTHING;
    }
    else if ( recv_size > 0)
    {
        if ( error_code == 0 && x93_cmd )
        {
            printf_debug( "fd:%d,expected value:%d,actually receive:%d\n" , io_fd ,  expectedLength , recv_size );

            uint8_t xor_byte;

            xor_byte = (uint8_t)getCheckedXor( x93_cmd , expectedLength-1 );

            if ( xor_byte != x93_cmd[expectedLength-1] )
            {
                printf_debug("xor should be 0x%x,but 0x%x\n" , xor_byte , x93_cmd[expectedLength-1] );
                return -1;
            }

            memcpy( responseBuffer , x93_cmd , expectedLength );

            return expectedLength;
        }
        else if ( e5 )
        {
            responseBuffer[0]=0xe5;
            return 1;
        }
        else if ( e6 )
        {
            responseBuffer[0]=0xe6;
            return -1;
        }
    }

    return valid_length;
}