Index: /trunk/FACT++/src/fscctrl.cc
===================================================================
--- /trunk/FACT++/src/fscctrl.cc	(revision 11833)
+++ /trunk/FACT++/src/fscctrl.cc	(revision 11834)
@@ -84,5 +84,5 @@
     double GetTempPT1000(double R) const
     {
-        const double R0 = 1000; // 1KOhm
+        const double R0 = 1000; // 1kOhm
 
         const double a = 3.85e-3;
@@ -242,4 +242,272 @@
         }
 
+        int mapv[] =
+        {
+            0, 24, 16,  8,
+            1, 25, 17,  9,
+            2, 26, 18, 10,
+            //
+            3, 27, 19, 11,
+            4, 28, 20, 12,
+            5, 29, 21, 13,
+            //
+            32, 36, 33, 34, 37, 38,
+            //
+            -1
+        };
+
+
+        int mapc[] =
+        {
+            40, 64, 56, 48,
+            41, 65, 57, 49,
+            42, 66, 58, 50,
+            //
+            43, 67, 59, 51,
+            44, 68, 60, 52,
+            45, 69, 61, 53,
+            //
+            72, 76, 73, 74, 77, 78,
+            //
+            -1
+        };
+
+
+        int maprh[] =
+        {
+            80, 81, 82, 83, -1
+        };
+
+        int offrh[] =
+        {
+            821, 822, 816, 822,
+        };
+
+        int mapt[] =
+        {
+              0,  1,  2,  3,  4,  5,  6, 56, 57, 58, 59, 60,
+             61, 62, 32, 33, 34, 35, 36, 63, 37, 38, 39, 24,
+             25, 26, 27, 28, 29, 30, 31,
+             //
+             8, 9, 48, 49, 40, 41, 16, 17,
+             //
+             10, 11, 50, 51, 42, 43, 18, 19, 12, 52, 20, 44,
+             //
+             13, 21, 45, 53,
+             //
+             14, 15, 46, 47,
+             //
+             -1
+        };
+
+        vector<float> voltages;
+        vector<float> currents;
+        vector<float> humidities;
+        vector<float> temperatures;
+
+        for (int *pv=mapv; *pv>0; pv++)
+            voltages.push_back(volt[*pv]);
+
+        for (int *pc=mapc; *pc>0; pc++)
+            currents.push_back(volt[*pc]*5);
+
+        for (int idx=0; idx<4; idx++)
+        {
+            voltages[idx +8] *= -1;
+            voltages[idx+20] *= -1;
+            currents[idx +8] *= -1;
+            currents[idx+20] *= -1;
+        }
+        voltages[27] *= -1;
+        voltages[29] *= -1;
+        currents[27] *= -1;
+        currents[29] *= -1;
+
+        int idx=0;
+        for (int *ph=maprh; *ph>0; ph++, idx++)
+            humidities.push_back((volt[*ph]-offrh[idx])*0.0313);
+
+        for (int *pt=mapt; *pt>0; pt++)
+            temperatures.push_back(resist[*pt]>800&&resist[*pt]<2000 ? GetTempPT1000(resist[*pt]) : 0);
+
+        // 0 = 3-(3+0)%4
+        // 3 = 3-(3+1)%4
+        // 2 = 3-(3+2)%4
+        // 1 = 3-(3+3)%4
+
+        /*
+         index	unit	offset	scale	crate	for board:
+         0	mV	0	1	0	FAD
+         24	mV	0	1	1	FAD
+         16	mV	0	1	2	FAD
+         8	mV	0	1	3	FAD
+
+         1	mV	0	1	0	FAD
+         25	mV	0	1	1	FAD
+         17	mV	0	1	2	FAD
+         9	mV	0	1	3	FAD
+
+         2	mV	0	-1	0	FAD
+         26	mV	0	-1	1	FAD
+         18	mV	0	-1	2	FAD
+         10	mV	0	-1	3	FAD
+
+         --
+
+         3	mV	0	1	0	FPA
+         27	mV	0	1	1	FPA
+         19	mV	0	1	2	FPA
+         11	mV	0	1	3	FPA
+
+         4	mV	0	1	0	FPA
+         28	mV	0	1	1	FPA
+         20	mV	0	1	2	FPA
+         12	mV	0	1	3	FPA
+
+         5	mV	0	-1	0	FPA
+         29	mV	0	-1	1	FPA
+         21	mV	0	-1	2	FPA
+         13	mV	0	-1	3	FPA
+
+         --
+
+         32	mV	0	1	bottom	ETH
+         36	mV	0	1	top	ETH
+
+         33	mV	0	1	bottom	FTM
+         34	mV	0	-1	bottom	FTM
+
+         37	mV	0	1	top	FFC
+         38	mV	0	-1	top	FLP
+
+         -----
+
+         40	mA	0	5	0	FAD
+         64	mA	0	5	1	FAD
+         56	mA	0	5	2	FAD
+         48	mA	0	5	3	FAD
+
+         41	mA	0	5	0	FAD
+         65	mA	0	5	1	FAD
+         57	mA	0	5	2	FAD
+         49	mA	0	5	3	FAD
+
+         42	mA	0	-5	0	FAD
+         66	mA	0	-5	1	FAD
+         58	mA	0	-5	2	FAD
+         50	mA	0	-5	3	FAD
+
+         --
+
+         43	mA	0	5	0	FPA
+         67	mA	0	5	1	FPA
+         59	mA	0	5	2	FPA
+         51	mA	0	5	3	FPA
+
+         44	mA	0	5	0	FPA
+         68	mA	0	5	1	FPA
+         60	mA	0	5	2	FPA
+         52	mA	0	5	3	FPA
+
+         45	mA	0	-5	0	FPA
+         69	mA	0	-5	1	FPA
+         61	mA	0	-5	2	FPA
+         53	mA	0	-5	3	FPA
+
+         ---
+
+         72	mA	0	5	bottom	ETH
+         76	mA	0	5	top	ETH
+
+         73	mA	0	5	bottom	FTM
+         74	mA	0	-5	bottom	FTM
+
+         77	mA	0	5	top	FFC
+         78	mA	0	-5	top	FLP
+
+         ----
+
+         80	% RH	-821	0.0313		FSP000
+         81	% RH	-822	0.0313		FSP221
+         82	% RH	-816	0.0313		Sector0
+         83	% RH	-822	0.0313		Sector2
+         */
+
+        // TEMPERATURES
+        // 31 x Sensor plate
+        //  8 x Crate
+        // 12 x PS
+        //  4 x Backpanel
+        //  4 x Switchbox
+
+
+
+        /*
+         0	ohms	FSP	000
+         1	ohms	FSP	010
+         2	ohms	FSP	023
+         3	ohms	FSP	043
+         4	ohms	FSP	072
+         5	ohms	FSP	080
+         6	ohms	FSP	092
+         56	ohms	FSP	103
+         57	ohms	FSP	111
+         58	ohms	FSP	121
+         59	ohms	FSP	152
+         60	ohms	FSP	163
+         61	ohms	FSP	171
+         62	ohms	FSP	192
+         32	ohms	FSP	200
+         33	ohms	FSP	210
+         34	ohms	FSP	223
+         35	ohms	FSP	233
+         36	ohms	FSP	243
+         63	ohms	FSP	252
+         37	ohms	FSP	280
+         38	ohms	FSP	283
+         39	ohms	FSP	293
+         24	ohms	FSP	311
+         25	ohms	FSP	321
+         26	ohms	FSP	343
+         27	ohms	FSP	352
+         28	ohms	FSP	363
+         29	ohms	FSP	371
+         30	ohms	FSP	381
+         31	ohms	FSP	392
+         8	ohms	Crate0	?
+         9	ohms	Crate0	?
+         48	ohms	Crate1	?
+         49	ohms	Crate1	?
+         40	ohms	Crate2	?
+         41	ohms	Crate2	?
+         16	ohms	Crate3	?
+         17	ohms	Crate3	?
+         10	ohms	PS	Crate 0
+         11	ohms	PS	Crate 0
+         50	ohms	PS	Crate 1
+         51	ohms	PS	Crate 1
+         42	ohms	PS	Crate 2
+         43	ohms	PS	Crate 2
+         18	ohms	PS	Crate 3
+         19	ohms	PS	Crate 3
+         12	ohms	PS	Aux0
+         52	ohms	PS	Aux0
+         20	ohms	PS	Aux1
+         44	ohms	PS	Aux1
+         13	ohms	Backpanel	?
+         21	ohms	Backpanel	?
+         45	ohms	Backpanel	?
+         53	ohms	Backpanel	?
+         14	ohms	Switchbox0	?
+         15	ohms	Switchbox0	?
+         46	ohms	Switchbox1	?
+         47	ohms	Switchbox1	?
+         7	ohms	nc	nc
+         22	ohms	nc	nc
+         23	ohms	nc	nc
+         54	ohms	nc	nc
+         55	ohms	nc	nc
+         */
+
         for (size_t i=0; i<resist.size(); i++)
             if (resist[i]>800 && resist[i]<2000)
@@ -247,4 +515,9 @@
         else
                 cout << setw(2) << i << " - " << setw(4) << (int)resist[i] << ": " << "----" << endl;
+
+        UpdateTemp(time, temperatures);
+        UpdateVolt(time, voltages);
+        UpdateCur( time, currents);
+        UpdateHum( time, humidities);
 
         StartRead();
@@ -340,6 +613,5 @@
     {
         data.insert(data.begin(), time);
-        svc.setData(data.data(), data.size()*sizeof(float));
-        svc.updateService();
+        svc.Update(data);
     }
 
@@ -367,8 +639,8 @@
     ConnectionDimFSC(ba::io_service& ioservice, MessageImp &imp) :
         ConnectionFSC(ioservice, imp),
-        fDimTemp   ("FSC_CONTROL/TEMPERATURE", "F:1;F:64", ""),
-        fDimHum    ("FSC_CONTROL/HUMIDITY",    "F:1;F:40", ""),
-        fDimVolt   ("FSC_CONTROL/VOLTAGE",     "F:1;F:40", ""),
-        fDimCurrent("FSC_CONTROL/CURRENT",     "F:1;F:4",  "")
+        fDimTemp   ("FSC_CONTROL/TEMPERATURE", "F:1;F:31;F:8;F:12;F:4;F4", ""),
+        fDimHum    ("FSC_CONTROL/HUMIDITY",    "F:1;F:1;F:1;F:1;F:1", ""),
+        fDimVolt   ("FSC_CONTROL/VOLTAGE",     "F:1;F:4;F:4;F:4;F:4;F:4;F:4;F:2;F:2;F:1;F:1", ""),
+        fDimCurrent("FSC_CONTROL/CURRENT",     "F:1;F:4;F:4;F:4;F:4;F:4;F:4;F:2;F:2;F:1;F:1", "")
     {
     }
