I'm using the cpppo library to discover devices on a network. I'm using the client API to send out a list identity request over UDP. Unfortunately, one of the devices discovered is a PowerFlex 700 which returns a CIP packet with a 0 length field. Looking at the comments in your code it appears that you're aware of this bug in PowerFlex devices and have attempted to code against this in your parser. Unfortunately, this doesn't appear to work for my scenario and so the client object is left in an invalid state, presumably because it's got unparsed data that it's not sure what to do with. The problem I've got then is that the situation is not recoverable; there's no way I can continue the process. The only thing I can do is start again which leads to the same issue. Alternatively, I could use TCP and step through the network addresses for the subnet but this is really inefficient.
If you have any suggestions on how I might recover from this issue that would be great. To help, here's the packet of data that's returned by the Power Flex in Hex.
I'm using the cpppo library to discover devices on a network. I'm using the client API to send out a list identity request over UDP. Unfortunately, one of the devices discovered is a PowerFlex 700 which returns a CIP packet with a 0 length field. Looking at the comments in your code it appears that you're aware of this bug in PowerFlex devices and have attempted to code against this in your parser. Unfortunately, this doesn't appear to work for my scenario and so the client object is left in an invalid state, presumably because it's got unparsed data that it's not sure what to do with. The problem I've got then is that the situation is not recoverable; there's no way I can continue the process. The only thing I can do is start again which leads to the same issue. Alternatively, I could use TCP and step through the network addresses for the subnet but this is really inefficient.
If you have any suggestions on how I might recover from this issue that would be great. To help, here's the packet of data that's returned by the Power Flex in Hex.
63000000000000000000000000000000000000000000000001000c00270001000002af129b7d7a91000000000000000001007b0068006e03610020e6242020506f776572466c65782037303020564320343830562032343841202020202020ff
And here's the relevant part from the cpppo logger...
Thanks for a great library.