blob: 8c3908b8537d2fa162d96527a229c541dab476f6 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// package org.apache.plc4x.rust.s7.readwrite;
// Code generated by code-generation. DO NOT EDIT.
use std::io::{Error, ErrorKind, Read, Write};
use plc4rust::{Message, NoOption};
use plc4rust::read_buffer::ReadBuffer;
use plc4rust::write_buffer::WriteBuffer;
#[derive(PartialEq, Debug, Clone)]
pub struct S7ParameterUserDataItemCPUFunctionsOptions {
}
#[derive(PartialEq, Debug, Clone)]
pub struct S7ParameterUserDataItemCPUFunctions {
// -> DefaultImplicitField{serializeExpression=DefaultBinaryTerm{a=DefaultVariableLiteral{name='lengthInBytes', typeReference='null', args=null, index=null, child=null}, b=DefaultNumericLiteral{number=2}, operation='-'}} DefaultTypedNamedField{name='itemLength'} DefaultTypedField{type=AbstractSimpleTypeReference{baseType=UINT, sizeInBits=8}} DefaultField{attributes={}}
pub method: u8,
pub cpuFunctionType: u8,
pub cpuFunctionGroup: u8,
pub cpuSubfunction: u8,
pub sequenceNumber: u8,
// -> DefaultOptionalField{conditionExpression=DefaultBinaryTerm{a=DefaultVariableLiteral{name='cpuFunctionType', typeReference='null', args=null, index=null, child=null}, b=DefaultNumericLiteral{number=8}, operation='=='}} DefaultTypedNamedField{name='dataUnitReferenceNumber'} DefaultTypedField{type=AbstractSimpleTypeReference{baseType=UINT, sizeInBits=8}} DefaultField{attributes={}}
// -> DefaultOptionalField{conditionExpression=DefaultBinaryTerm{a=DefaultVariableLiteral{name='cpuFunctionType', typeReference='null', args=null, index=null, child=null}, b=DefaultNumericLiteral{number=8}, operation='=='}} DefaultTypedNamedField{name='lastDataUnit'} DefaultTypedField{type=AbstractSimpleTypeReference{baseType=UINT, sizeInBits=8}} DefaultField{attributes={}}
// -> DefaultOptionalField{conditionExpression=DefaultBinaryTerm{a=DefaultVariableLiteral{name='cpuFunctionType', typeReference='null', args=null, index=null, child=null}, b=DefaultNumericLiteral{number=8}, operation='=='}} DefaultTypedNamedField{name='errorCode'} DefaultTypedField{type=AbstractSimpleTypeReference{baseType=UINT, sizeInBits=16}} DefaultField{attributes={}}
}
impl S7ParameterUserDataItemCPUFunctions {
pub fn itemLength(&self) -> u8 {
0
}
}
impl Message for S7ParameterUserDataItemCPUFunctions {
type M = S7ParameterUserDataItemCPUFunctions;
type P = S7ParameterUserDataItemCPUFunctionsOptions;
fn get_length_in_bits(&self) -> u32 {
todo!()
}
fn serialize<T: Write>(&self, writer: &mut WriteBuffer<T>) -> Result<usize, Error> {
writer.write_u8(self.itemLength())?;
writer.write_u8(self.method)?;
writer.write_u_n(4, self.self.cpuFunctionType as u64)? as u8;
writer.write_u_n(4, self.self.cpuFunctionGroup as u64)? as u8;
writer.write_u8(self.cpuSubfunction)?;
writer.write_u8(self.sequenceNumber)?;
writer.write_u8(self.dataUnitReferenceNumber)?;
writer.write_u8(self.lastDataUnit)?;
writer.write_u16(self.errorCode)?;
Ok(0)
}
fn parse<T: Read>(reader: &mut ReadBuffer<T>, parameter: Option<Self::P>) -> Result<Self::M, Error> {
// (Re-)define the options
let parameter = parameter.unwrap();
let itemLength = reader.read_u8()?;
let method = reader.read_u8()?;
let cpuFunctionType = reader.read_u_n(4)? as u8;
let cpuFunctionGroup = reader.read_u_n(4)? as u8;
let cpuSubfunction = reader.read_u8()?;
let sequenceNumber = reader.read_u8()?;
let dataUnitReferenceNumber = reader.read_u8()?;
let lastDataUnit = reader.read_u8()?;
let errorCode = reader.read_u16()?;
Ok(Self::M {
method,
cpuFunctionType,
cpuFunctionGroup,
cpuSubfunction,
sequenceNumber,
dataUnitReferenceNumber,
lastDataUnit,
errorCode
})
}
}