Example #1
0
uint8_t gprs_send(void *data_p, uint8_t len, uint16_t tag, uint16_t time)
{
    DBG_ASSERT(data_p != NULL __DBG_LINE);
    DBG_ASSERT(len != 0 __DBG_LINE);
    
    queue_data_type new_item;
    osel_memset(&new_item, 0x00, sizeof new_item);
    
    OSEL_ISR_ENTRY();
    osel_memcpy(new_item.gprs_data, data_p, len);
    new_item.gprs_data_len  = len;
    new_item.gprs_tag       = tag; 
    new_item.ack_time       = time;
    OSEL_ISR_EXIT();
    
    if(GET_QUEUE_LEN == QUEUE_MAXLEN)
    {
        return QUEUE_MAXLEN+1;
    }
    else
    {
        queue_send(&gprs_queue, new_item);      //入队成功
        osel_post(GPRS_SEND_EVENT, NULL, OSEL_EVENT_PRIO_LOW);
        return(GET_QUEUE_LEN);                 //返回队列长度
    }
}
Example #2
0
static bool_t gprs_write_fifo(const uint8_t *const payload, const uint16_t len)
{
	DBG_ASSERT(payload != NULL __DBG_LINE);
	if (gprs_info.gprs_state == WORK_ON && len < SEND_SIZE)
	{
		if(gprs_info.data_mode)
		{
            wdt_clear(SOFT_WDT);
            led_set(LED_RED, TRUE);
            osel_memset(send.buf, 0x00, SEND_SIZE);
            osel_memcpy(send.buf, payload, len);
            send.len = len;
            write_fifo(send.buf, send.len);
            led_set(LED_RED, FALSE);
			return TRUE;
		}
		else
		{
			if(xSemaphoreTake(gprs_mutex, 600) == pdTRUE)
			{
				led_set(LED_RED, TRUE);
				//等待数据发送完成
				xTimerReset(gprs_daemon_timer, 400);
				osel_memset(send_data, 0x00, SIZE);
				tfp_sprintf((char *)send_data, CIPSEND, len);
				
				osel_memset(send.buf, 0x00, SEND_SIZE);
				osel_memcpy(send.buf, payload, len);
				send.len = len;
				write_fifo(send_data, mystrlen((char *)send_data));
				return TRUE;
			}
		}
	}
	
	return FALSE;
}
Example #3
0
uint8_t lora_data_read(uint8_t *buf, uint8_t len)
{
    uint8_t read_len = 0;
    if(len > lora_recv_index)
    {
        read_len = lora_recv_index;
    }
    else
    {
        read_len = len;
    }
    
    osel_memcpy(buf, lora_recv_data, read_len);
    
    osel_memset(lora_recv_data, 0x00, read_len);
    lora_recv_index = 0;
    return read_len;
}
Example #4
0
static bool_t lora_reg_write(uint8_t reg, uint8_t *buf, uint8_t len)
{
    uint8_t send_buf[30];
    uint8_t index = 0;

    lora_mode = SETTING_MODE;
//    lora_reg = reg;

    send_buf[index++] = 0xFF;
    send_buf[index++] = 0x56;
    send_buf[index++] = 0xAE;
    send_buf[index++] = 0x35;
    send_buf[index++] = 0xA9;
    send_buf[index++] = 0x55;
    send_buf[index++] = 0x90;
    send_buf[index++] = reg;
    send_buf[index++] = len;
    osel_memcpy(&send_buf[index], buf, len);
    index += len;

    lora_recv_rxok_flag = FALSE;
    uart_send_string(lora_port, send_buf, index);

    vTaskDelay(600 / portTICK_PERIOD_MS);

    if (lora_recv_index!=0)
    {
        if ((lora_recv_index == (len + 1)) &&
                (lora_recv_data[0] == 0x24))
        {
            lora_recv_index = 0;
            osel_memset(lora_recv_data, 0x00, 150);
            return TRUE;
        }
    }

    lora_recv_index = 0;
    osel_memset(lora_recv_data, 0x00, 150);
    return FALSE;
}
Example #5
0
static void set(const gprs_info_t *const info)
{
	osel_memcpy(&gprs_info, info, sizeof(gprs_info_t));
}