/*********************************************************************************
|
* Copyright: (C) 2022 LingYun IoT System Studio
|
* All rights reserved.
|
*
|
* Filename: packet.c
|
* Description: This file is packet API functions
|
*
|
* Version: 1.0.0(18/04/22)
|
* Author: Guo Wenxue <guowenxue@gmail.com>
|
* ChangeLog: 1, Release initial version on "18/04/22 16:30:25"
|
*
|
********************************************************************************/
|
|
#include <stdio.h>
|
#include <string.h>
|
#include <unistd.h>
|
#include <time.h>
|
#include "packet.h"
|
#include "logger.h"
|
#include "ds18b20.h"
|
|
int get_devid(char *devid, int size, int sn)
|
{
|
if( !devid || size<DEVID_LEN )
|
{
|
log_error("Invalid input arugments\n");
|
return -1;
|
}
|
|
memset(devid, 0, size);
|
snprintf(devid, size, "rpi#%04d", sn);
|
return 0;
|
}
|
|
int get_time(char *strtime, int size)
|
{
|
time_t now = time(NULL);
|
struct tm *tnow = localtime(&now);
|
|
if( !strtime || size<TIME_LEN )
|
{
|
log_error("Invalid input arugments\n");
|
return -1;
|
}
|
|
snprintf(strtime, size, "%04d-%02d-%2d %02d:%02d:%02d",
|
tnow->tm_year+1900, tnow->tm_mon+1, tnow->tm_mday,
|
tnow->tm_hour, tnow->tm_min, tnow->tm_sec);
|
|
return 0;
|
}
|
|
int packet_string_pack(pack_info_t *pack_info, char *pack_buf, int size)
|
{
|
if( !pack_info || !pack_buf || size<=0 )
|
{
|
log_error("Invalid input arguments\n");
|
return -1;
|
}
|
|
snprintf(pack_buf, size, "%s|%s|%d.%d", pack_info->devid, pack_info->strtime,
|
temper_integer(pack_info->temper), temper_fract(pack_info->temper));
|
|
return strlen(pack_buf);
|
}
|