Skip to content

Commit

Permalink
fix(plc4go/s7): port over some changes from plc4j
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl committed Feb 6, 2024
1 parent 464f510 commit fdda471
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
7 changes: 6 additions & 1 deletion plc4go/internal/s7/Reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ func (m *Reader) ToPlc4xReadResponse(response readWriteModel.S7Message, readRequ
responseCodes[tagName] = responseCode
if responseCode == apiModel.PlcResponseCode_OK {
ctxForModel := options.GetLoggerContextForModel(context.TODO(), m.log, options.WithPassLoggerToModel(m.passLogToModel))
plcValue, err := readWriteModel.DataItemParse(ctxForModel, payloadItem.GetData(), tag.GetDataType().DataProtocolId(), int32(tag.GetNumElements()))
plcValue, err := parsePlcValue(ctxForModel, tag, payloadItem.GetData())
if err != nil {
return nil, errors.Wrap(err, "Error parsing data item")
}
Expand Down Expand Up @@ -295,6 +295,11 @@ func encodeS7Address(tag apiModel.PlcTag) (readWriteModel.S7Address, error) {
), nil
}

func parsePlcValue(ctx context.Context, tag PlcTag, data []byte) (apiValues.PlcValue, error) {
// TODO: port over
panic("not implemented yet")
}

// Helper to convert the return codes returned from the S7 into one of our standard
func decodeResponseCode(dataTransportErrorCode readWriteModel.DataTransportErrorCode) apiModel.PlcResponseCode {
switch dataTransportErrorCode {
Expand Down
2 changes: 1 addition & 1 deletion plc4go/internal/s7/Writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ func serializePlcValue(tag apiModel.PlcTag, plcValue apiValues.PlcValue) (readWr
if s7StringTag, ok := tag.(*PlcStringTag); ok {
stringLength = s7StringTag.stringLength
}
data, err := readWriteModel.DataItemSerialize(plcValue, s7Tag.GetDataType().DataProtocolId(), int32(stringLength))
data, err := readWriteModel.DataItemSerialize(plcValue, s7Tag.GetDataType().DataProtocolId(), 0 /*TODO: port s7DriverContext.getControllerType()*/, int32(stringLength))
if err != nil {
return nil, errors.Wrapf(err, "Error serializing tag item of type: '%v'", s7Tag.GetDataType())
}
Expand Down

0 comments on commit fdda471

Please sign in to comment.