MCPcopy Create free account
hub / github.com/DexterInd/GoPiGo3 / get_grove_value

Method get_grove_value

Software/Python/gopigo3.py:749–821  ·  view source on GitHub ↗

Get a grove port value Keyword arguments: port -- The grove port. GROVE_1 or GROVE_2.

(self, port)

Source from the content-addressed store, hash-verified

747 raise I2CError("start_grove_i2c error: Not ready to start I2C transaction")
748
749 def get_grove_value(self, port):
750 """
751 Get a grove port value
752
753 Keyword arguments:
754 port -- The grove port. GROVE_1 or GROVE_2.
755 """
756 if port == self.GROVE_1:
757 message_type = self.SPI_MESSAGE_TYPE.GET_GROVE_VALUE_1
758 port_index = 0
759 elif port == self.GROVE_2:
760 message_type = self.SPI_MESSAGE_TYPE.GET_GROVE_VALUE_2
761 port_index = 1
762 else:
763 raise IOError("Port unsupported. Must get one at a time.")
764
765 if self.GroveType[port_index] == self.GROVE_TYPE.IR_DI_REMOTE:
766 outArray = [self.SPI_Address, message_type, 0, 0, 0, 0, 0]
767 reply = self.spi_transfer_array(outArray)
768 if(reply[3] == 0xA5):
769 if(reply[4] == self.GroveType[port_index] and reply[5] == 0):
770 return reply[6]
771 else:
772 raise SensorError("get_grove_value error: Invalid value")
773 else:
774 raise IOError("get_grove_value error: No SPI response")
775
776 elif self.GroveType[port_index] == self.GROVE_TYPE.IR_EV3_REMOTE:
777 outArray = [self.SPI_Address, message_type, 0, 0, 0, 0, 0, 0, 0, 0]
778 reply = self.spi_transfer_array(outArray)
779 if(reply[3] == 0xA5):
780 if(reply[4] == self.GroveType[port_index] and reply[5] == 0):
781 return [reply[6], reply[7], reply[8], reply[9]]
782 else:
783 raise SensorError("get_grove_value error: Invalid value")
784 else:
785 raise IOError("get_grove_value error: No SPI response")
786
787 elif self.GroveType[port_index] == self.GROVE_TYPE.US:
788 outArray = [self.SPI_Address, message_type, 0, 0, 0, 0, 0, 0]
789 reply = self.spi_transfer_array(outArray)
790 if(reply[3] == 0xA5):
791 if(reply[4] == self.GroveType[port_index] and reply[5] == 0):
792 value = (((reply[6] << 8) & 0xFF00) | (reply[7] & 0xFF))
793 if value == 0:
794 raise SensorError("get_grove_value error: Sensor not responding")
795 elif value == 1:
796 raise ValueError("get_grove_value error: Object not detected within range")
797 else:
798 return value
799 else:
800 raise SensorError("get_grove_value error: Invalid value")
801 else:
802 raise IOError("get_grove_value error: No SPI response")
803
804 elif self.GroveType[port_index] == self.GROVE_TYPE.I2C:
805 outArray = [self.SPI_Address, message_type, 0, 0, 0, 0]
806 outArray.extend([0 for i in range(self.GroveI2CInBytes[port_index])])

Callers 8

grove_i2c_transferMethod · 0.95
is_too_closeMethod · 0.45
read_mmMethod · 0.45
readMethod · 0.45
read_ir_keysFunction · 0.45
Grove_IR.pyFile · 0.45
Grove_US2.pyFile · 0.45
Grove_US.pyFile · 0.45

Calls 5

spi_transfer_arrayMethod · 0.95
spi_read_8Method · 0.95
I2CErrorClass · 0.85
SensorErrorClass · 0.70
ValueErrorClass · 0.70

Tested by

no test coverage detected