示例#1
0
文件: serial.c 项目: vyacht/gpsd
ssize_t gpsd_serial_write(struct gps_device_t * session,
			  const char *buf, const size_t len)
{
    ssize_t status;
    int error = 0;
    bool ok;
/*
    if (session == NULL ||
	session->context == NULL || session->context->readonly)
	return 0;
*/
    status = write(session->gpsdata.gps_fd, buf, len);
    ok = (status == (ssize_t) len);
    session->gpsdata.bytes_send += status;
    if(!ok) error = errno;
    (void)tcdrain(session->gpsdata.gps_fd);
    /* extra guard prevents expensive hexdump calls */
    if (session->context->debug >= LOG_IO) {
	char scratchbuf[MAX_PACKET_LENGTH*2+1];
	gpsd_report(session->context->debug, LOG_IO,
		    "=> GPS: %s%s (%d, %d)\n",
		    gpsd_packetdump(scratchbuf, sizeof(scratchbuf),
				    (char *)buf, len), ok ? "" : " FAILED", status, error);
    }
    return status;
}
示例#2
0
文件: serial.c 项目: vyacht/carambola
ssize_t gpsd_write(struct gps_device_t * session, const char *buf, size_t len)
{
    ssize_t status;
    bool ok;
    if (session == NULL ||
	session->context == NULL || session->context->readonly)
	return 0;
    status = write(session->gpsdata.gps_fd, buf, len);
    ok = (status == (ssize_t) len);
    (void)tcdrain(session->gpsdata.gps_fd);
    /* extra guard prevents expensive hexdump calls */
    if (session->context->debug >= LOG_IO)
	gpsd_report(LOG_IO, "=> GPS: %s%s\n",
		    gpsd_packetdump((char *)buf, len), ok ? "" : " FAILED");
    return status;
}
示例#3
0
ssize_t gpsd_serial_write(struct gps_device_t * session,
			  const char *buf, const size_t len)
{
    ssize_t status;
    bool ok;
    if (session == NULL ||
	session->context == NULL || session->context->readonly)
	return 0;
    status = write(session->gpsdata.gps_fd, buf, len);
    ok = (status == (ssize_t) len);
    (void)tcdrain(session->gpsdata.gps_fd);
    /* extra guard prevents expensive hexdump calls */
    if (session->context->errout.debug >= LOG_IO) {
	char scratchbuf[MAX_PACKET_LENGTH*2+1];
	gpsd_log(&session->context->errout, LOG_IO,
		 "=> GPS: %s%s\n",
		 gpsd_packetdump(scratchbuf, sizeof(scratchbuf),
				 (char *)buf, len), ok ? "" : " FAILED");
    }
    return status;
}