From 68826376ee5f47783c644c6604f4411ec747cd7e Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Fri, 14 Nov 2025 23:52:16 +0800
Subject: [PATCH] Add UDP DNS client source code
---
project/2.socketd/booster/packet.h | 141 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 141 insertions(+), 0 deletions(-)
diff --git a/project/2.socketd/booster/packet.h b/project/2.socketd/booster/packet.h
new file mode 100644
index 0000000..beb212a
--- /dev/null
+++ b/project/2.socketd/booster/packet.h
@@ -0,0 +1,141 @@
+/********************************************************************************
+ * Copyright: (C) 2022 LingYun IoT System Studio
+ * All rights reserved.
+ *
+ * Filename: packet.h
+ * Description: This head 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:24:40"
+ *
+ ********************************************************************************/
+#ifndef _PACKET_H_
+#define _PACKET_H_
+
+#include <stdint.h>
+#include <time.h>
+
+#define DEVID_LEN 8
+#define TIME_LEN 32
+
+typedef struct pack_info_s
+{
+ uint8_t tag; /* Tag for TLV */
+ char devid[DEVID_LEN+1]; /* device ID */
+ struct tm sample_time; /* sample time */
+ float temper; /* sample temperature */
+} pack_info_t;
+
+/* packet function pointer type */
+typedef int (* pack_proc_t)(pack_info_t *pack_info, uint8_t *pack_buf, int size);
+
+/* description: get device ID
+ * input args:
+ * $devid : device ID string
+ * $size : device ID output buffer size
+ * $sn : serial number
+ * return value: <0: failure 0:ok
+ */
+extern int get_devid(char *devid, int size, int sn);
+
+/* description: get current system in struct tm
+ * input args:
+ * $sample_time: sample time in struct tm
+ * return value: <0: failure 0:ok
+ */
+extern int get_time(struct tm *sample_time);
+
+/* description: package a string packet in format "devid|time|temper"
+ * input args:
+ * $pack_info: packet data contains devid, time and temperature
+ * $pack_buf : packet output buffer
+ * $size : packet output buffer size
+ * return value: <0: failure >0: packet bytes
+ */
+extern int packet_segmented_pack(pack_info_t *pack_info, uint8_t *pack_buf, int size);
+
+
+/* description: package a json string packet: {"devid":"xxx", "time":"xxx", "temperature":"xxx"}
+ * input args:
+ * $pack_info: packet data contains devid, time and temperature
+ * $pack_buf : packet output buffer
+ * $size : packet output buffer size
+ * return value: <0: failure >0: packet bytes
+ */
+extern int packet_json_pack(pack_info_t *pack_info, uint8_t *pack_buf, int size);
+
+
+/* TLV(Tag Length Value) PDU(Protocal Data Unit) format:
+ *
+ * +-----------+-----------+------------+-------------+-------------+
+ * | Header(2B)| Tag(1B) | Length(2B) | Value(nB) | CRC16(2B) |
+ * +-----------+-----------+------------+-------------+-------------+
+ *
+ * Header(2B): 0xFE 0xED
+ * Tag(1B): 0x01->temperature 0x02->Humidity 0x03->Noisy ...
+ * Length(2B): Data length
+ * Value(nB): Data value
+ * CRC16(2B): CRC from Header to Value
+ */
+
+/* TLV Header */
+#define TLV_HEADER 0xFEED
+
+/* TLV bytes without payload: Header(2B)+Tag(1B)+Length(2B)+CRC16(2B) */
+#define TLV_FIXSIZE 7
+
+/* TLV packet length are no more than 32 bytes */
+#define TLV_MAXSIZE 32
+
+/* TVL Tag definition */
+enum
+{
+ TAG_TEMPERATURE = 1,
+ TAG_HUMIDITY,
+ TAG_NOISY,
+};
+
+typedef struct tlv_pack_s
+{
+ uint16_t header;
+ uint8_t tag;
+ uint16_t len;
+ uint8_t data[0]; /* Zero length array */
+ /* followed: $len bytes payload data */
+ /* followed: 2 bytes CRC checksum */
+} tlv_pack_t;
+
+extern int ushort_to_bytes(uint16_t val, uint8_t *bytes);
+extern uint16_t bytes_to_ushort(uint8_t *bytes, int len);
+
+/*
+ * description: compute the CRC-ITU-T for the data buffer
+ * input args:
+ * $data : data pointer
+ * $length: number of bytes in the buffer
+ * return value: the 16-bits CRC value
+ */
+extern uint16_t crc_itu_t(const uint8_t *data, size_t length);
+
+/* description: package a TLV packet
+ * input args:
+ * $pack_info: packet data contains devid, time and temperature
+ * $pack_buf : packet output buffer
+ * $size : packet output buffer size
+ * return value: <0: failure >0: packet bytes
+ */
+
+int packet_tlv_pack(pack_info_t *pack_info, uint8_t *pack_buf, int size);
+
+/* description: package a TLV packet
+ * input args:
+ * $pack_info: packet data contains devid, time and temperature
+ * $pack_buf : packet output buffer
+ * $size : packet output buffer size
+ * return value: <0: failure 0: not integrated >0: processed packet len
+ */
+
+int parser_tlv_pack(pack_info_t *pack_info, uint8_t *pack_buf, int size);
+
+#endif /* ----- #ifndef _PACKET_H_ ----- */
--
Gitblit v1.9.1