Get a grove port value Keyword arguments: port -- The grove port. GROVE_1 or GROVE_2.
(self, port)
| 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])]) |
no test coverage detected