Mercurial > hg > minc-tools
changeset 1078:e61f4cba278c
Added support for C_ECHO command.
author | neelin <neelin> |
---|---|
date | Tue, 08 Jul 1997 23:15:09 +0000 |
parents | a385df086a89 |
children | aa4b14f73bd7 |
files | conversion/dicomserver/dicom_element_defs.h conversion/dicomserver/dicomserver.c conversion/dicomserver/reply.c |
diffstat | 3 files changed, 47 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/conversion/dicomserver/dicom_element_defs.h +++ b/conversion/dicomserver/dicom_element_defs.h @@ -42,6 +42,8 @@ /* Define commands */ #define ACR_C_STORE_RQ 0x0001 #define ACR_C_STORE_RSP 0x8001 +#define ACR_C_ECHO_RQ 0x0030 +#define ACR_C_ECHO_RSP 0x8030 /* Define dataset type */ #define ACR_NULL_DATASET 0x0101
--- a/conversion/dicomserver/dicomserver.c +++ b/conversion/dicomserver/dicomserver.c @@ -4,9 +4,12 @@ @GLOBALS : @CREATED : January 28, 1997 (Peter Neelin) @MODIFIED : $Log: dicomserver.c,v $ -@MODIFIED : Revision 4.0 1997-05-07 20:06:20 neelin -@MODIFIED : Release of minc version 0.4 +@MODIFIED : Revision 4.1 1997-07-08 23:15:09 neelin +@MODIFIED : Added support for C_ECHO command. @MODIFIED : + * Revision 4.0 1997/05/07 20:06:20 neelin + * Release of minc version 0.4 + * * Revision 1.2 1997/03/11 13:10:48 neelin * Working version of dicomserver. * @@ -26,7 +29,7 @@ ---------------------------------------------------------------------------- */ #ifndef lint -static char rcsid[]="$Header: /private-cvsroot/minc/conversion/dicomserver/dicomserver.c,v 4.0 1997-05-07 20:06:20 neelin Rel $"; +static char rcsid[]="$Header: /private-cvsroot/minc/conversion/dicomserver/dicomserver.c,v 4.1 1997-07-08 23:15:09 neelin Exp $"; #endif #include <sys/types.h> @@ -255,17 +258,28 @@ /* Data transfer */ case ACR_PDU_DATA_TF: - /* Check command and state */ - acr_command = acr_find_short(group_list, ACR_Command, -1); - if ((state != WAITING_FOR_DATA) || - (acr_command != ACR_C_STORE_RQ)) { + /* Check state */ + if (state != WAITING_FOR_DATA) { status = ACR_HIGH_LEVEL_ERROR; state = DISCONNECTING; break; } - /* Compose a reply */ - output_message = data_reply(input_message); + /* Check command and compose a reply */ + acr_command = acr_find_short(group_list, ACR_Command, -1); + switch (acr_command) { + case ACR_C_STORE_RQ: + case ACR_C_ECHO_RQ: + output_message = data_reply(input_message); + break; + default: + status = ACR_HIGH_LEVEL_ERROR; + state = DISCONNECTING; + break; + } + + /* Carry on only if we have a store command */ + if (acr_command != ACR_C_STORE_RQ) break; /* Get rid of the command groups */ group_list = skip_command_groups(group_list);
--- a/conversion/dicomserver/reply.c +++ b/conversion/dicomserver/reply.c @@ -4,9 +4,12 @@ @GLOBALS : @CREATED : January 28, 1997 (Peter Neelin) @MODIFIED : $Log: reply.c,v $ -@MODIFIED : Revision 4.0 1997-05-07 20:06:20 neelin -@MODIFIED : Release of minc version 0.4 +@MODIFIED : Revision 4.1 1997-07-08 23:15:09 neelin +@MODIFIED : Added support for C_ECHO command. @MODIFIED : + * Revision 4.0 1997/05/07 20:06:20 neelin + * Release of minc version 0.4 + * * Revision 1.1 1997/03/04 20:56:47 neelin * Initial revision * @@ -473,6 +476,7 @@ public Acr_Message data_reply(Acr_Message input_message) { Acr_Group group, input_group; + int reply_command; /* Print log message */ if (Do_logging >= HIGH_LOGGING) { @@ -483,6 +487,16 @@ /* Get the input group list */ input_group = acr_get_message_group_list(input_message); + /* Figure out the reply that we need */ + switch (acr_find_short(input_group, ACR_Command, -1)) { + case ACR_C_STORE_RQ: + reply_command = ACR_C_STORE_RSP; break; + case ACR_C_ECHO_RQ: + reply_command = ACR_C_ECHO_RSP; break; + default: + reply_command = ACR_C_ECHO_RSP; break; + } + /* Create the reply */ group = acr_create_group(ACR_MESSAGE_GID); @@ -490,14 +504,16 @@ acr_group_add_element(group, acr_create_element_string(ACR_Affected_SOP_class_UID, acr_find_string(input_group, ACR_Affected_SOP_class_UID, ""))); - SAVE_SHORT(group, ACR_Command, ACR_C_STORE_RSP); + SAVE_SHORT(group, ACR_Command, reply_command); SAVE_SHORT(group, ACR_Message_id_brt, acr_find_short(input_group, ACR_Message_id, 0)); SAVE_SHORT(group, ACR_Dataset_type, ACR_NULL_DATASET); SAVE_SHORT(group, ACR_Status, ACR_SUCCESS); - acr_group_add_element(group, - acr_create_element_string(ACR_Affected_SOP_instance_UID, - acr_find_string(input_group, ACR_Affected_SOP_instance_UID, ""))); + if (reply_command == ACR_C_STORE_RSP) { + acr_group_add_element(group, + acr_create_element_string(ACR_Affected_SOP_instance_UID, + acr_find_string(input_group, ACR_Affected_SOP_instance_UID, ""))); + } return make_message(group);