Skip to content

Commit b51e644

Browse files
micsatMartinMelikMerkumians
authored andcommitted
CipFileCreateInstance added
1 parent cb20062 commit b51e644

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

cipfile.c

+36-5
Original file line numberDiff line numberDiff line change
@@ -1007,12 +1007,12 @@ EipStatus CipFilePostCreateCallback(CipInstance *RESTRICT const new_instance,
10071007
file_instance->file_name.number_of_strings = 0; //empty file name
10081008
file_instance->invocation_method = kCipFileInvocationMethodNotApplicable;
10091009

1010-
EipStatus internal_state = CreateFileObject(new_instance->instance_number,
1011-
file_instance, false);
1010+
EipStatus internal_state = CreateFileObject(new_instance->instance_number,
1011+
file_instance, false);
10121012

1013-
new_instance->data = file_instance;
1014-
CipFileSetDownloadAndClearSupported(file_instance);
1015-
file_instance->delete_instance_data = &CipFileDeleteInstanceData;
1013+
new_instance->data = file_instance;
1014+
CipFileSetDownloadAndClearSupported(file_instance);
1015+
file_instance->delete_instance_data = &CipFileDeleteInstanceData;
10161016

10171017
AddIntToMessage(new_instance->instance_number,
10181018
&(message_router_response->message));
@@ -1170,6 +1170,37 @@ EipStatus CipFileCreateEDSAndIconFileInstance() {
11701170
return kEipStatusOk;
11711171
}
11721172

1173+
/** @brief creates empty file object instance
1174+
*
1175+
* @param instance_name_string name of the created file object instance
1176+
*/
1177+
CipInstance CipFileCreateInstance(char *instance_name_string) {
1178+
CipInstance *new_instance = AddCipInstances(file_object_class, 1);
1179+
1180+
// create new file object struct
1181+
CipFileObjectValues *file_instance =
1182+
CipCalloc(1, sizeof(CipFileObjectValues));
1183+
1184+
CipFileSetInstanceName(file_instance, instance_name_string,
1185+
strlen(instance_name_string) + 1);
1186+
1187+
// default values
1188+
file_instance->state = kCipFileObjectStateFileEmpty;
1189+
file_instance->file_revision.major_revision = 0;
1190+
file_instance->file_revision.minor_revision = 0;
1191+
file_instance->file_name.number_of_strings = 0; // empty file name
1192+
file_instance->invocation_method = kCipFileInvocationMethodNotApplicable;
1193+
file_instance->file_encoding_format = kCipFileObjectFileEncodingFormatBinary;
1194+
1195+
CreateFileObject(new_instance->instance_number, file_instance, false);
1196+
1197+
new_instance->data = file_instance;
1198+
CipFileSetDownloadAndClearSupported(file_instance);
1199+
file_instance->delete_instance_data = &CipFileDeleteInstanceData;
1200+
1201+
return *new_instance;
1202+
}
1203+
11731204
EipStatus CipFileInit() {
11741205
if(NULL == (file_object_class = CreateCipClass(kCipFileObjectClassCode, 7, /* # class attributes */
11751206
32, /* # highest class attribute number */

cipfile.h

+2
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,6 @@ EipStatus CipFileInit(void);
9595

9696
void CipFileSessionTimerCheck(const MilliSeconds elapsed_time);
9797

98+
CipInstance CipFileCreateInstance(char *instance_name_string);
99+
98100
#endif /* OPENER_CIPFILE_H_ */

0 commit comments

Comments
 (0)