Make M155 / M156 a bit more flexible

This commit is contained in:
Scott Lahteine
2016-08-11 00:16:14 -07:00
parent e3efb04295
commit dd75fca4d9
2 changed files with 14 additions and 17 deletions

View File

@@ -5259,15 +5259,13 @@ inline void gcode_M121() { endstops.enable_globally(false); }
*/
inline void gcode_M155() {
// Set the target address
if (code_seen('A'))
i2c.address(code_value_byte());
if (code_seen('A')) i2c.address(code_value_byte());
// Add a new byte to the buffer
else if (code_seen('B'))
i2c.addbyte(code_value_int());
if (code_seen('B')) i2c.addbyte(code_value_byte());
// Flush the buffer to the bus
else if (code_seen('S')) i2c.send();
if (code_seen('S')) i2c.send();
// Reset and rewind the buffer
else if (code_seen('R')) i2c.reset();
@@ -5279,11 +5277,11 @@ inline void gcode_M121() { endstops.enable_globally(false); }
* Usage: M156 A<slave device address base 10> B<number of bytes>
*/
inline void gcode_M156() {
uint8_t addr = code_seen('A') ? code_value_byte() : 0;
int bytes = code_seen('B') ? code_value_int() : 1;
if (code_seen('A')) i2c.address(code_value_byte());
if (addr && bytes > 0 && bytes <= 32) {
i2c.address(addr);
uint8_t bytes = code_seen('B') ? code_value_byte() : 1;
if (i2c.addr > 0 && bytes > 0 && bytes <= 32) {
i2c.reqbytes(bytes);
}
else {