File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -829,20 +829,42 @@ NAN_METHOD(S7Client::Disconnect) {
829829}
830830
831831NAN_METHOD (S7Client::GetParam) {
832+ int paramNumber, ret;
833+ int pData = 0 ;
834+ uint16_t pU16Data = 0 ;
835+
832836 S7Client *s7client = ObjectWrap::Unwrap<S7Client>(info.Holder ());
833837
834838 if (!info[0 ]->IsInt32 ()) {
835839 return Nan::ThrowTypeError (" Wrong arguments" );
836840 }
837841
838- int pData;
839- int returnValue = s7client->snap7Client ->GetParam (Nan::To<int32_t >(info[0 ]).FromJust ()
840- , &pData);
842+ paramNumber = Nan::To<int32_t >(info[0 ]).FromJust ();
841843
842- if (returnValue == 0 ) {
843- info.GetReturnValue ().Set (Nan::New<v8::Integer>(pData));
844+ switch (paramNumber) {
845+ case p_u16_RemotePort:
846+ case p_u16_SrcRef:
847+ case p_u16_DstRef:
848+ case p_u16_SrcTSap:
849+ ret = s7client->snap7Client ->GetParam (paramNumber, &pU16Data);
850+ break ;
851+ default :
852+ ret = s7client->snap7Client ->GetParam (paramNumber, &pData);
853+ break ;
854+ }
855+
856+ if (ret != 0 ) {
857+ info.GetReturnValue ().Set (Nan::New<v8::Integer>(ret));
858+ return ;
859+ }
860+
861+ if (paramNumber == p_u16_RemotePort ||
862+ paramNumber == p_u16_SrcRef ||
863+ paramNumber == p_u16_DstRef ||
864+ paramNumber == p_u16_SrcTSap) {
865+ info.GetReturnValue ().Set (Nan::New<v8::Integer>(pU16Data));
844866 } else {
845- info.GetReturnValue ().Set (Nan::New<v8::Integer>(returnValue ));
867+ info.GetReturnValue ().Set (Nan::New<v8::Integer>(pData ));
846868 }
847869}
848870
Original file line number Diff line number Diff line change @@ -976,18 +976,36 @@ NAN_METHOD(S7Server::SetResourceless) {
976976}
977977
978978NAN_METHOD (S7Server::GetParam) {
979+ int paramNumber, ret;
980+ int pData = 0 ;
981+ uint16_t pU16Data = 0 ;
982+
979983 S7Server *s7server = ObjectWrap::Unwrap<S7Server>(info.Holder ());
980984
981985 if (!info[0 ]->IsInt32 ()) {
982986 return Nan::ThrowTypeError (" Wrong arguments" );
983987 }
984988
985- int pData;
986- int ret = s7server->snap7Server ->GetParam (Nan::To<int32_t >(info[0 ]).FromJust ()
987- , &pData);
989+ paramNumber = Nan::To<int32_t >(info[0 ]).FromJust ();
990+
991+ if (paramNumber == p_u16_LocalPort) {
992+ ret = s7server->snap7Server ->GetParam (paramNumber, &pU16Data);
993+ } else {
994+ ret = s7server->snap7Server ->GetParam (paramNumber, &pData);
995+ }
996+
988997 s7server->lastError = ret;
989998
990- info.GetReturnValue ().Set (Nan::New<v8::Boolean>(ret == 0 ));
999+ if (ret != 0 ) {
1000+ info.GetReturnValue ().Set (Nan::False ());
1001+ return ;
1002+ }
1003+
1004+ if (paramNumber == p_u16_LocalPort) {
1005+ info.GetReturnValue ().Set (Nan::New<v8::Integer>(pU16Data));
1006+ } else {
1007+ info.GetReturnValue ().Set (Nan::New<v8::Integer>(pData));
1008+ }
9911009}
9921010
9931011NAN_METHOD (S7Server::SetParam) {
You can’t perform that action at this time.
0 commit comments