#!/bin/sh mode=$1 i2c_bus=$2 chip_slave=$3 server_platform=$4 path=`pwd` fmt_print="${path}/format_print.sh" i2c_script="${path}/i2c_${server_platform}.sh" sensor_name="TMP112" # @Param1 tmp112 data high 8bit # @Param2 tmp112 data low 8bit # @Param3 customization sensor name convert_tmp112_data(){ hex_value1=$(echo "$1" | awk '{sub(/^0x/,""); print}') hex_value2=$(echo "$2" | awk '{sub(/^0x/,""); print}') merge_value="${hex_value1}${hex_value2}" # bc calculator recognized upper case only, change data to upper case upper_hex_value=$(echo "$merge_value" | awk '{ for(i=1; i<=length($0); i++){ if(tolower(substr($0,i,1)) ~ /^[a-f]$/) printf toupper(substr($0,i,1)); else printf substr($0,i,1); } print "" }') # change data from hex to dec dec_val=$(echo "ibase=16; $upper_hex_value" | bc) binary_number=$(echo "ibase=16;obase=2;$upper_hex_value" | bc) bin_length=$(echo $binary_number | awk '{print length($0)}') last_digit=$(echo $binary_number | cut -c $bin_length) if [ $last_digit -eq 0 ];then temp=$(echo "scale=4; $dec_val / 16 * 0.0625" | bc) elif [ $last_digit -eq 1 ];then temp=$(echo "scale=4; ( $dec_val - 1 ) / 8 * 0.0625" | bc) fi echo "$3 : $temp" } read_tmp112_data(){ res=`$i2c_script $i2c_bus "1" "$chip_slave" "0x00" "2"` convert_tmp112_data $res "$sensor_name" } case "${mode}" in "read") read_tmp112_data ;; *) $fmt_print "console" "Error" "[plugin_tmp112]Unexpected Input Param : $mode" ;; esac