/etc/powerman/cb-7050.dev is in powerman 2.3.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #
# Measurement Computing Corp. CB-7050 digital I/O module
#
# This is "laboratory quality" power control as it requires wires
# connected directly to motherboards and some hand tuning of delay values.
#
# Ref: CB-7000 DIO User's Manual
#
# Notes:
# - Important note: CB-7050 data lines are not isolated and share a common
# ground. Beware of ground loops!
# - Wire DI[0-6] to +5V side of reset header
# - Wire D0[0-7] (open collector) to +5 side of power switch header.
# - Wire the CB-7050 ground to moboard ground (send to reset/power headers).
# - CB-7050 is presumed to be at address 01
# - CB-7520 RS-232 to RS-485 converter connects to Cyclades TS at 115000 baud.
# - DO lines are "open" (0) at power on. Writing 1 connects the line to gnd.
# - DI7 is n.c. on the CB-7050. Although plug 7 can be controlled via D07,
# power state will always be "unknown" and on/off are effectively toggles.
# - [HDAMA] power on delay = 2s, power off delay = 5s. Tune for your moboard.
# - This would be cleaner if we could call status_all from off|on scripts.
# - This would be cleaner if we had "whileon|whileoff" (no hard coded delays).
#
specification "cb7050" {
timeout 10.0
plug name { "0" "1" "2" "3" "4" "5" "6" "7" }
script login {
send "$01M\r" # verify module name
expect "!017050\r" # model 7050
send "$012\r" # verify conf (type,baud,dfmt)
expect "!0140..00\r" # type=40 baud=?? dfmt=00
}
script status_all {
send "$016\r" # read digital I/O status
expect "!..(.)(.)00\r" # $1=DI[4-7] $2=DI[0-3]
setplugstate "0" $2 on="1|3|5|7|9|B|D|F" off="0|2|4|6|8|A|C|E"
setplugstate "1" $2 on="2|3|6|7|A|B|E|F" off="0|1|4|5|8|9|C|D"
setplugstate "2" $2 on="4|5|6|7|C|D|E|F" off="0|1|2|3|8|9|A|B"
setplugstate "3" $2 on="8|9|A|B|C|D|E|F" off="0|1|2|3|4|5|6|7"
setplugstate "4" $1 on="1|3|5|7|9|B|D|F" off="0|2|4|6|8|A|C|E"
setplugstate "5" $1 on="2|3|6|7|A|B|E|F" off="0|1|4|5|8|9|C|D"
setplugstate "6" $1 on="4|5|6|7|C|D|E|F" off="0|1|2|3|8|9|A|B"
setplugstate "7" $1 # set to unknown
}
script on {
send "$016\r"
expect "!..(.)(.)00\r"
setplugstate "0" $2 on="1|3|5|7|9|B|D|F" off="0|2|4|6|8|A|C|E"
setplugstate "1" $2 on="2|3|6|7|A|B|E|F" off="0|1|4|5|8|9|C|D"
setplugstate "2" $2 on="4|5|6|7|C|D|E|F" off="0|1|2|3|8|9|A|B"
setplugstate "3" $2 on="8|9|A|B|C|D|E|F" off="0|1|2|3|4|5|6|7"
setplugstate "4" $1 on="1|3|5|7|9|B|D|F" off="0|2|4|6|8|A|C|E"
setplugstate "5" $1 on="2|3|6|7|A|B|E|F" off="0|1|4|5|8|9|C|D"
setplugstate "6" $1 on="4|5|6|7|C|D|E|F" off="0|1|2|3|8|9|A|B"
setplugstate "7" $1 off="." # set to off
ifoff {
send "#01A%s01\r" # 0xA0 | bitnum (set)
expect ">\r"
delay 4 # XXX: tune me for moboard!
send "#01A%s00\r" # 0xA0 | bitnum (clear)
expect ">\r"
}
}
script off {
send "$016\r"
expect "!..(.)(.)00\r"
setplugstate "0" $2 on="1|3|5|7|9|B|D|F" off="0|2|4|6|8|A|C|E"
setplugstate "1" $2 on="2|3|6|7|A|B|E|F" off="0|1|4|5|8|9|C|D"
setplugstate "2" $2 on="4|5|6|7|C|D|E|F" off="0|1|2|3|8|9|A|B"
setplugstate "3" $2 on="8|9|A|B|C|D|E|F" off="0|1|2|3|4|5|6|7"
setplugstate "4" $1 on="1|3|5|7|9|B|D|F" off="0|2|4|6|8|A|C|E"
setplugstate "5" $1 on="2|3|6|7|A|B|E|F" off="0|1|4|5|8|9|C|D"
setplugstate "6" $1 on="4|5|6|7|C|D|E|F" off="0|1|2|3|8|9|A|B"
setplugstate "7" $1 on="." # set to on
ifon {
send "#01A%s01\r" # 0xA0 | bitnum (set)
expect ">\r"
delay 5 # XXX tune me for moboard!
send "#01A%s00\r" # 0xA0 | bitnum (clear)
expect ">\r"
}
}
# XXX Evil hack - short init* to ground on the module and run pm -f to set
# baud rate to 115000 (0A). If beacon isn't shorted, this will just time out.
# Power cycle the module after the change.
script beacon_on {
send "%%0101400A00\r"
expect "!01\r"
}
#
# TODO: add support for a CB-7018P at address 02 wired to eight
# thermocouples for status_temp support?
#
}
|