ps: this is my idea of having a transparent proxym without messing around with data!My idea on the checksums additional data, they should be inserted and testes on the endpoints (software / r2c2), ReplicatorG should add CRC code, R2C2 would confirm in the end of the line ... but maybe Jorge disagree and would like to pinpoint some valid point on having the proxy doing CRC inspection!
No dia 2 de Ago de 2012 09:03, "bobc" <bobcou...@googlemail.com> escreveu:
>
> Nice!
>
>
> On Thursday, August 2, 2012 12:44:17 AM UTC+1, Nelson Neves wrote:
>>
>> ps: this is my idea of having a transparent proxym without messing around with data!
>> My idea on the checksums additional data, they should be inserted and testes on the endpoints (software / r2c2), ReplicatorG should add CRC code, R2C2 would confirm in the end of the line ... but maybe Jorge disagree and would like to pinpoint some valid point on having the proxy doing CRC inspection!
>>
>
> I would agree, CRC would be best done end to end. Anything in the middle should just be a transparent pipe.
I would do the same I did on Smart Scale, a kind of packets and CRC. I implemented on C for ARM and Java for Android: http://code.google.com/p/casainho-projects/wiki/SmartScale
The projects uses a UART-bluetooth module.
> I was recently looking at the line number/checksum scheme RepRap added to the Gcode "protocol" and realised what a horrible hack it is, very amateur. It's robustness to errors is very poor. e.g. if the "*" gets lost, the checksum isn't even checked! There are also major bugs in the spec/code which would screw up error recovery anyway. The whole thing is so bad it is beyond any "quick fix". I suspect the USB-serial adapters are providing all the reliability for the comms.
But there is still the UART bus that can get errors...
I would agree, CRC would be best done end to end. Anything in the middle should just be a transparent pipe.
I was recently looking at the line number/checksum scheme RepRap added to the Gcode "protocol" and realised what a horrible hack it is, very amateur. It's robustness to errors is very poor. e.g. if the "*" gets lost, the checksum isn't even checked! There are also major bugs in the spec/code which would screw up error recovery anyway. The whole thing is so bad it is beyond any "quick fix". I suspect the USB-serial adapters are providing all the reliability for the comms.
Anyway, there is a good opportunity to design something better ;)
No dia 2 de Ago de 2012 10:39, "Nelson Neves" <nelson....@gmail.com> escreveu:
>>
>> I would agree, CRC would be best done end to end. Anything in the middle should just be a transparent pipe.
>
>
> I just confirmed something with my colleague (experienced C++ software developer) about the tcp/ip protocol and he confirmed this:
> On a tcp/ip connection there is already some mechanism in the tcp/ip stack that do error checksum, if some packet gets corrupted (payload is altered, or other error) the tcp/ip protocol will request another retry and discard the previous data, all this is done in a transparent mode, fro the stack itself, without user/software/etc inter-action!
>
> The problem should be in the UART communication, when going into high speed mode and using some bad cabling, that should be the problem, and in that case is far beyond the TCP/Serial proxy, it's already a problem in the hardware communication between Oxino and R2C2! (just to enforce my idea that endpoints checksum should be more important).
Yes. USB alreday do CRC that is why we did not needed this.
I think we should implement the packet/crc layer to be under current data layer going from Linux board and r2c2, only.
Maybe doing that on python will be quicker.
Yes. USB alreday do CRC that is why we did not needed this.I think we should implement the packet/crc layer to be under current data layer going from Linux board and r2c2, only.
Maybe doing that on python will be quicker.