/*********************************************************************************
|
* Copyright: (C) 2023 LingYun IoT System Studio.
|
* All rights reserved.
|
*
|
* Filename: comport.c
|
* Description: This file is linux comport common API functions
|
*
|
* Version: 1.0.0(11/08/23)
|
* Author: Guo Wenxue <guowenxue@gmail.com>
|
* ChangeLog: 1, Release initial version on "11/08/23 16:18:43"
|
*
|
********************************************************************************/
|
|
#ifndef _COMPORT_H_
|
#define _COMPORT_H_
|
|
#include <stdio.h>
|
#include <stdlib.h>
|
#include <unistd.h>
|
#include <string.h>
|
#include <getopt.h>
|
#include <fcntl.h>
|
#include <errno.h>
|
#include <termios.h>
|
#include <sys/stat.h>
|
#include <sys/wait.h>
|
#include <sys/types.h>
|
#include <sys/stat.h>
|
#include <sys/select.h>
|
|
#define CONFIG_DEF_FRAGSIZE 128
|
typedef struct comport_s
|
{
|
char devname[32];
|
unsigned char databit, parity, stopbit, flowctrl;
|
long baudrate;
|
|
int fd;
|
int fragsize; /* frag size when do large data send */
|
} comport_t;
|
|
|
/*
|
* description: Open the comport and returned by $comport
|
*
|
* input args: $comport: corresponding comport handler
|
* $devname: The comport device name path, such as '/dev/ttyS3'
|
* $baudrate: The baudrate, such as 115200
|
* $settings: The databit,parity,stopbit,flowctrl settings, such as '8N1N'
|
*
|
* return value: The comport opened file description, <0 means failure
|
*/
|
extern int comport_open(comport_t *comport, const char *devname, long baudrate, const char *settings);
|
|
/*
|
* description: close comport
|
* input args: $comport: corresponding comport handler
|
*/
|
extern void comport_close(comport_t *comport);
|
|
/*
|
* description: write $bytes $data to $comport
|
* return value: 0: write ok <0: write failure
|
*/
|
extern int comport_send(comport_t *comport, char *data, int data_bytes);
|
|
/*
|
* description: read data from $comport in $timeout <ms> to $buf no more than $buf_size bytes
|
* return value: the actual read data bytes, <0: read failure
|
*/
|
#define TIMEOUT_NONE 0
|
extern int comport_recv(comport_t *comport, char *buf, int buf_size, unsigned long timeout);
|
|
#endif
|