home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************/
- /* */
- /* uioif_i.c - UserIO InterFace platform Independent Code */
- /* Author: John C. Fairman August 31, 1990 */
- /* Copyright 1990 by Neuralware Inc. */
- /* */
- /* $Author : $ */
- /* $Date : $ */
- /* $Source : $ */
- /* $Revision : $ */
- /* $Log : $ */
- /* */
- /*****************************************************************/
-
- #define UIO_SERVER 1
- #define SERVER_EMULATOR_FILE 2
- #define HOME_FOR_TRANSFER_DATA 1
- #define SKIP_COMPAT_DATA 1
- #include "userutl.h"
- #include "uio_strc.h"
- #include "uio_tran.h"
- #include "uio_cmds.pro"
- #include "uio_tran.pro"
- #include "uio_if_i.pro"
-
- /*******************************************************************/
- /* This function upacks the data transfer buffer and calls the */
- /* userio cmd. */
- /*******************************************************************/
-
- /* FUNCTION */
- EXPORT VOID Handle_command()
- {
- RPC_AREA_T *rpc;
-
- rpc = &Data_transfer_ptr->RPC_area;
- switch ((UNINT)rpc->request)
- {
- /* General Purpose Commands */
- case CMD_INIT :
- {
- RPC_AREA_T *rpc;
- INITCMD *initcmd;
- NINT process_id;
- TEXT process_name[FNALC];
-
- rpc = &Data_transfer_ptr->RPC_area;
- initcmd = &rpc->all_arg_lists.initcmd;
- strcpy(process_name, initcmd->filename);
-
- rpc->return_value.buffer_int = process_id = UIO_Init(process_name);
- }
- break;
-
- /**/
- case CMD_TERM :
- {
- RPC_AREA_T *rpc;
- INITCMD *initcmd;
-
- rpc = &Data_transfer_ptr->RPC_area;
- initcmd = &rpc->all_arg_lists.initcmd;
-
- rpc->return_value.buffer_int = UIO_Term(initcmd->process_id);
- }
- break;
-
- case CMD_ATTENTION :
-
- rpc->return_value.buffer_int = UIO_Attention();
-
- break;
-
- /* Learning Commands */
- case CMD_LEARN_START :
-
- rpc->return_value.buffer_int = UIO_Learn_Start();
-
- break;
-
- case CMD_LEARN_INPUT :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
- NINT npes;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
- npes = (NINT)datacmd->npes;
-
- rpc->return_value.buffer_int =
- UIO_Learn_Input((NINT)datacmd->layn, (NINT)datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
-
- Put_data_into_transfer_buffer(
- (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data),
- npes, (NINT)DATA_TYPE);
- }
- break;
-
- case CMD_LEARN_OUTPUT :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
- NINT npes;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
- npes = (NINT)datacmd->npes;
-
- rpc->return_value.buffer_int =
- UIO_Learn_Output(datacmd->layn, datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
-
- Put_data_into_transfer_buffer(
- (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data),
- npes, (NINT)DATA_TYPE);
- }
- break;
-
- /**/
- case CMD_LEARN_RESULT :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
-
- rpc->return_value.buffer_int =
- UIO_Learn_Result(datacmd->layn, datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
- }
- break;
-
- case CMD_LEARN_END :
-
- rpc->return_value.buffer_int = UIO_Learn_End();
-
- break;
-
-
- /* Recall Commands */
- case CMD_RECALL_START :
-
- rpc->return_value.buffer_int = UIO_Recall_Start();
-
- break;
-
- case CMD_READ :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
- NINT npes;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
- npes = (NINT)datacmd->npes;
-
- rpc->return_value.buffer_int =
- UIO_Read(datacmd->layn, datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
- Put_data_into_transfer_buffer(
- (BUFFER_CHAR*)(Data_transfer_ptr->data_area.data),
- npes, (NINT)DATA_TYPE);
- }
- break;
-
- case CMD_WRITE :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
-
- rpc->return_value.buffer_int =
- UIO_Write(datacmd->layn, datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
- }
- break;
-
- /**/
- case CMD_WRITE_STEP :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
-
- rpc->return_value.buffer_int =
- UIO_Write_Step(datacmd->layn, datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
- }
- break;
-
- case CMD_RECALL_TEST :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
- NINT npes;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
- npes = (NINT)datacmd->npes;
-
- rpc->return_value.buffer_int =
- UIO_Recall_Test(datacmd->layn, datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
-
- Put_data_into_transfer_buffer(
- (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data),
- npes, (NINT)DATA_TYPE);
- }
- break;
-
- case CMD_RECALL_END :
-
- rpc->return_value.buffer_int = UIO_Recall_End();
-
- break;
-
- /* Other Commands */
- case CMD_INSTRUMENT :
- {
- RPC_AREA_T *rpc;
- INSTRUMENTCMD *instrumentcmd;
-
- rpc = &Data_transfer_ptr->RPC_area;
- instrumentcmd = &rpc->all_arg_lists.instrumentcmd;
-
- rpc->return_value.buffer_int =
- UIO_Instrument(instrumentcmd->instrument_id,
- instrumentcmd->ndataelems,
- (SREAL *)(Data_transfer_ptr->data_area.data));
- }
- break;
-
- case CMD_REWIND :
-
- rpc->return_value.buffer_int = UIO_Rewind();
-
- break;
-
- case CMD_EXPLAIN :
- {
- RPC_AREA_T *rpc;
- DATACMD *datacmd;
-
- rpc = &Data_transfer_ptr->RPC_area;
- datacmd = &rpc->all_arg_lists.datacmd;
-
- rpc->return_value.buffer_int =
- UIO_Explain(datacmd->layn, datacmd->npes,
- (SREAL *)(Data_transfer_ptr->data_area.data));
- }
- break;
-
- /* This can't ever happen!
- case CMD_WRITE_VECTOR :
-
- UIO_Write_Vector();
-
- break;
- */
-
- default :
-
- UIO_server_error((NINT)UNKNOWN_COMMAND);
- }
-
- /**/
- rpc->request = REQ_ACKNOWLEDGE;
- Data_transfer_ptr->RPC_area.process_from_id = Process_id;
- Data_transfer_ptr->RPC_area.process_to_id = HOST_PROCESS_ID;
- if (UIO_error_value != 0)
- {
- rpc->request = (BUFFER_INT)UIO_error_value;
- UIO_error_value = 0;
- }
- }
-
-