package it.angelic.soulissclient.model.typicals; import android.content.Context; import android.text.Html; import android.util.Log; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.Calendar; import it.angelic.soulissclient.Constants; import it.angelic.soulissclient.HalfFloatUtils; import it.angelic.soulissclient.R; import it.angelic.soulissclient.R.color; import it.angelic.soulissclient.helpers.SoulissPreferenceHelper; import it.angelic.soulissclient.model.ISoulissTypicalSensor; import it.angelic.soulissclient.model.SoulissTypical; /** * Occupa DUE slot, quindi l'output viene dal suo e dal suo fratello destro (66) * * @author Ale */ public class SoulissTypical6nAnalogue extends SoulissTypical implements ISoulissTypicalSensor { public SoulissTypical6nAnalogue(Context c, SoulissPreferenceHelper pre) { super(c, pre); } /** * */ private static final long serialVersionUID = 3784476625375361669L; @Override public String getOutputDesc() { if (Calendar.getInstance().getTime().getTime() - typicalDTO.getRefreshedAt().getTime().getTime() < (prefs.getDataServiceIntervalMsec() * 3)) return "OK"; else return context.getString(R.string.stale); } /** * La conversione del half fp si basa su HalfFloatUtils.toFloat */ @Override public float getOutputFloat() { int miofratello = getParentNode().getTypical((short) (typicalDTO.getSlot() + 1)).getTypicalDTO().getOutput(); //ora ho i due bytes, li converto int shifted = miofratello << 8; Log.i(Constants.TAG, "first:" + Long.toHexString((long) typicalDTO.getOutput()) + " second:" + Long.toHexString((long) miofratello) + "T6n Reading:" + Long.toHexString((long) shifted + typicalDTO.getOutput())); //return HalfFloatUtils.toFloat(shifted + typicalDTO.getOutput()); //non voglio usare DecimalFormat //float temp1 = (float) (HalfFloatUtils.toFloat(shifted + typicalDTO.getOutput())*100.0); //float temp2 = Math.round(temp1*100.0);//(round to nearest value) //return (float) (Math.round(temp2*100.0)/100.0); return HalfFloatUtils.toFloat(shifted + typicalDTO.getOutput()); } @Override public String getTypedOutputValue() { return String.format("%.2f", getOutputFloat()); } @Override public void getActionsLayout(Context ctx, final LinearLayout contLinear) { WindowManager mWinMgr = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); int displayWidth = mWinMgr.getDefaultDisplay().getWidth(); contLinear.removeAllViews(); final TextView cmd = new TextView(ctx); cmd.setText(Html.fromHtml(ctx.getString(R.string.reading) + ": " + getOutputFloat())); if (prefs.isLightThemeSelected()) cmd.setTextColor(ctx.getResources().getColor(color.black)); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.MATCH_PARENT); cmd.setLayoutParams(lp); lp.setMargins(2, 0, 0, 2); //cmd.setGravity(Gravity.TOP); contLinear.addView(cmd); } }