@@ -1590,6 +1590,95 @@ const struct nxt_i2c_sensor_info nxt_i2c_sensor_defs[] = {
15901590 },
15911591 },
15921592 },
1593+ [MS_ANGLE_SENSOR ] = {
1594+ /**
1595+ * @vendor_name: mindsensors.com
1596+ * @vendor_part_number: AngleSensor
1597+ * @vendor_part_name: GlideWheel-AS
1598+ * @vendor_website: http://www.mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=173
1599+ * @default_address: 0x18
1600+ */
1601+ .name = "ms-angle-sensor" ,
1602+ .vendor_id = "mndsnsrs" ,
1603+ .product_id = "AngSens" ,
1604+ .num_modes = 4 ,
1605+ .ms_mode_info = {
1606+ [0 ] = {
1607+ /**
1608+ * @description: Angle
1609+ * @value0: Angle
1610+ * @units_description: degrees
1611+ */
1612+ .name = "MS-AS-ANGLE" ,
1613+ .data_sets = 1 ,
1614+ .data_type = MSENSOR_DATA_S32 ,
1615+ .units = "deg" ,
1616+ },
1617+ [1 ] = {
1618+ /**
1619+ * @description: High-precision angle
1620+ * @value0: Angle
1621+ * @units_description: degrees
1622+ */
1623+ .name = "MS-AS-ANGLE2" ,
1624+ .raw_max = 360 ,
1625+ .si_max = 1800 ,
1626+ .data_sets = 1 ,
1627+ .decimals = 1 ,
1628+ .data_type = MSENSOR_DATA_S32 ,
1629+ .units = "deg" ,
1630+ },
1631+ [2 ] = {
1632+ /**
1633+ * @description: Rotational Speed
1634+ * @value0: Rotational Speed (-4000 to 4000)
1635+ * @units_description: revolutions per minute
1636+ */
1637+ .name = "MS-AS-RPM" ,
1638+ .raw_max = 100 ,
1639+ .si_max = 100 ,
1640+ .data_sets = 1 ,
1641+ .units = "rpm" ,
1642+ .data_type = MSENSOR_DATA_S16 ,
1643+ },
1644+ [3 ] = {
1645+ /**
1646+ * [^mode3-value1]: Angle value times 2
1647+ * (i.e. value of 10 = angle of 5 degrees).
1648+ * Allows for 0.5 degree precision.
1649+ * [^mode3-value2]: Value needs to be converted to
1650+ * 16-bit signed integer. Example:
1651+ * `if (value2 > 32767) value2 = value2 - 65536`
1652+ *
1653+ * @description: All values
1654+ * @value0: Angle
1655+ * @value1: Angle x2
1656+ * @value1_footnote: [^mode3-value1]
1657+ * @value2: Rotational Speed
1658+ * @value2_footnote: [^mode3-value2]
1659+ */
1660+ .name = "MS-AS-ALL" ,
1661+ .raw_max = 100 ,
1662+ .si_max = 100 ,
1663+ .data_sets = 3 ,
1664+ .data_type = MSENSOR_DATA_S32 ,
1665+ },
1666+ },
1667+ .i2c_mode_info = {
1668+ [0 ] = {
1669+ .read_data_reg = 0x42 ,
1670+ },
1671+ [1 ] = {
1672+ .read_data_reg = 0x46 ,
1673+ },
1674+ [2 ] = {
1675+ .read_data_reg = 0x4A ,
1676+ },
1677+ [3 ] = {
1678+ .read_data_reg = 0x42 ,
1679+ },
1680+ },
1681+ },
15931682 [MS_LIGHT_SENSOR_ARRAY ] = {
15941683 /**
15951684 * [^address]: The address is programmable. See manufacturer
0 commit comments