Implemented SetCommMask, SetCommTimeouts, GetCommMask, GetCommTimeouts.
diff --git a/server/request.h b/server/request.h
index d66c230..975330c 100644
--- a/server/request.h
+++ b/server/request.h
@@ -202,6 +202,8 @@
DECL_HANDLER(wake_queue);
DECL_HANDLER(wait_input_idle);
DECL_HANDLER(create_serial);
+DECL_HANDLER(get_serial_info);
+DECL_HANDLER(set_serial_info);
#ifdef WANT_REQUEST_HANDLERS
@@ -316,6 +318,8 @@
(req_handler)req_wake_queue,
(req_handler)req_wait_input_idle,
(req_handler)req_create_serial,
+ (req_handler)req_get_serial_info,
+ (req_handler)req_set_serial_info,
};
#endif /* WANT_REQUEST_HANDLERS */
diff --git a/server/serial.c b/server/serial.c
index e5b6066..64a9956 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -196,3 +196,58 @@
}
}
+DECL_HANDLER(get_serial_info)
+{
+ struct serial *serial;
+
+ if ((serial = get_serial_obj( current->process, req->handle, 0 )))
+ {
+ /* timeouts */
+ req->readinterval = serial->readinterval;
+ req->readconst = serial->readconst;
+ req->readmult = serial->readmult;
+ req->writeconst = serial->writeconst;
+ req->writemult = serial->writemult;
+
+ /* event mask */
+ req->eventmask = serial->eventmask;
+
+ /* comm port error status */
+ req->commerror = serial->commerror;
+
+ release_object( serial );
+ }
+}
+
+DECL_HANDLER(set_serial_info)
+{
+ struct serial *serial;
+
+ if ((serial = get_serial_obj( current->process, req->handle, 0 )))
+ {
+ /* timeouts */
+ if(req->flags & SERIALINFO_SET_TIMEOUTS)
+ {
+ serial->readinterval = req->readinterval;
+ serial->readconst = req->readconst;
+ serial->readmult = req->readmult;
+ serial->writeconst = req->writeconst;
+ serial->writemult = req->writemult;
+ }
+
+ /* event mask */
+ if(req->flags & SERIALINFO_SET_MASK)
+ {
+ serial->eventmask = req->eventmask;
+ }
+
+ /* comm port error status */
+ if(req->flags & SERIALINFO_SET_ERROR)
+ {
+ serial->commerror = req->commerror;
+ }
+
+ release_object( serial );
+ }
+}
+
diff --git a/server/trace.c b/server/trace.c
index 07c1a6d..786c8b4 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -1431,6 +1431,35 @@
fprintf( stderr, " handle=%d", req->handle );
}
+static void dump_get_serial_info_request( const struct get_serial_info_request *req )
+{
+ fprintf( stderr, " handle=%d", req->handle );
+}
+
+static void dump_get_serial_info_reply( const struct get_serial_info_request *req )
+{
+ fprintf( stderr, " readinterval=%08x,", req->readinterval );
+ fprintf( stderr, " readconst=%08x,", req->readconst );
+ fprintf( stderr, " readmult=%08x,", req->readmult );
+ fprintf( stderr, " writeconst=%08x,", req->writeconst );
+ fprintf( stderr, " writemult=%08x,", req->writemult );
+ fprintf( stderr, " eventmask=%08x,", req->eventmask );
+ fprintf( stderr, " commerror=%08x", req->commerror );
+}
+
+static void dump_set_serial_info_request( const struct set_serial_info_request *req )
+{
+ fprintf( stderr, " handle=%d,", req->handle );
+ fprintf( stderr, " flags=%d,", req->flags );
+ fprintf( stderr, " readinterval=%08x,", req->readinterval );
+ fprintf( stderr, " readconst=%08x,", req->readconst );
+ fprintf( stderr, " readmult=%08x,", req->readmult );
+ fprintf( stderr, " writeconst=%08x,", req->writeconst );
+ fprintf( stderr, " writemult=%08x,", req->writemult );
+ fprintf( stderr, " eventmask=%08x,", req->eventmask );
+ fprintf( stderr, " commerror=%08x", req->commerror );
+}
+
static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
(dump_func)dump_new_process_request,
(dump_func)dump_wait_process_request,
@@ -1540,6 +1569,8 @@
(dump_func)dump_wake_queue_request,
(dump_func)dump_wait_input_idle_request,
(dump_func)dump_create_serial_request,
+ (dump_func)dump_get_serial_info_request,
+ (dump_func)dump_set_serial_info_request,
};
static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
@@ -1651,6 +1682,8 @@
(dump_func)0,
(dump_func)dump_wait_input_idle_reply,
(dump_func)dump_create_serial_reply,
+ (dump_func)dump_get_serial_info_reply,
+ (dump_func)0,
};
static const char * const req_names[REQ_NB_REQUESTS] = {
@@ -1762,6 +1795,8 @@
"wake_queue",
"wait_input_idle",
"create_serial",
+ "get_serial_info",
+ "set_serial_info",
};
/* ### make_requests end ### */