'CR1000
'Created by Short Cut (2.8)

'Declare Variables and Units
Dim LCount_11
Public BattV
Public Rain_mm
Public AirTC
Public RH
Public PAR_Den
Public PAR_Tot
Public PAR_Den_2
Public PAR_Tot_2
Public DiffV(20)
Public cwb100_fields(216)
Public WirelessRoutes As String * 50
Public cwbSS(24)


Units BattV=Volts
Units Rain_mm=mm
Units AirTC=Deg C
Units RH=%
Units PAR_Den=umol/s/m^2
Units PAR_Tot=mmol/m^2
Units PAR_Den_2=umol/s/m^2
Units PAR_Tot_2=mmol/m^2
Units DiffV=mV

'Define Data Tables
DataTable(Micromet,True,-1)
	DataInterval(0,30,Min,10)
	Average(1,BattV,FP2,False)
	Totalize(1,Rain_mm,FP2,False)
	Average(1,AirTC,FP2,False)
	Sample(1,RH,FP2)
	Average(1,PAR_Den,FP2,False)
	Totalize(1,PAR_Tot,IEEE4,False)
	Average(1,PAR_Den_2,FP2,False)
	Totalize(1,PAR_Tot_2,IEEE4,False)
	Average(1,DiffV(1),FP2,False)
	Average(1,DiffV(2),FP2,False)
	Average(1,DiffV(3),FP2,False)
	Average(1,DiffV(4),FP2,False)
	Average(1,DiffV(5),FP2,False)
	Average(1,DiffV(6),FP2,False)
	Average(1,DiffV(7),FP2,False)
	Average(1,DiffV(8),FP2,False)
	Average(1,DiffV(9),FP2,False)
	Average(1,DiffV(10),FP2,False)
	Average(1,DiffV(11),FP2,False)
	Average(1,DiffV(12),FP2,False)
	Average(1,DiffV(13),FP2,False)
	Average(1,DiffV(14),FP2,False)
	Average(1,DiffV(15),FP2,False)
	Average(1,DiffV(16),FP2,False)
	Average(1,DiffV(17),FP2,False)
	Average(1,DiffV(18),FP2,False)
	Average(1,DiffV(19),FP2,False)
	Average(1,DiffV(20),FP2,False)
EndTable

DataTable(Table2,True,-1)
	DataInterval(0,1440,Min,10)
	Minimum(1,BattV,FP2,False,False)
EndTable

DataTable(VWC,true,-1)
  DataInterval(0,30,min,10)
  Sample(216,cwb100_fields,fp2)
EndTable


DataTable(Diag, true, -1)
  Sample (1,WirelessRoutes,FP2)
'Do not need to save RSSI here, it will be saved in the VWC data table  
EndTable


'Main Program
BeginProg
	Scan(30,Sec,1,0)
		'Default Datalogger Battery Voltage measurement BattV
		Battery(BattV)
		'TE525MM/TE525M Rain Gauge measurement Rain_mm
		PulseCount(Rain_mm,1,1,2,0,0.1,0)

'HMP45C (7-wire, cable switched power) Temperature & Relative Humidity Sensor measurements AirTC and RH
		PortSet(3,1)
		Delay(0,150,mSec)
		VoltSe(AirTC,1,mV2500,1,0,0,_60Hz,0.1,-40)
		VoltSe(RH,1,mV2500,2,0,0,_60Hz,0.1,0)
		PortSet(3,0)
		If RH>100 AND RH<108 Then RH=100
		'PARLITE Above canopy
		VoltDiff(PAR_Den,1,mv25,2,True,0,_60Hz,1000/5.2,0)
'		If PAR_Den<0 Then PAR_Den=0
'		PAR_Den=PAR_Den*1655.629
		'PARLITE below canopy
		VoltDiff(PAR_Den_2,1,mv25,3,True,0,_60Hz,1000/5.28,0)
'		If PAR_Den_2<0 Then PAR_Den_2=0
'		PAR_Den_2=PAR_Den_2*1655.629
		'Turn AM16/32 Multiplexer On
		PortSet(2,1)
		Delay(0,150,mSec)
		LCount_11=1
		SubScan(0,uSec,20)
			'Switch to next AM16/32 Multiplexer channel
			PulsePort(1,10000)
			'Generic Differential Voltage measurements DiffV() on the AM16/32 Multiplexer:
			VoltDiff(DiffV(LCount_11),1,AutoRangeC,4,True,0,_60Hz,25,0)
			LCount_11=LCount_11+1
		NextSubScan
		'Turn AM16/32 Multiplexer Off
		PortSet(2,0)
		Delay(0,150,mSec)
		'Call Data Tables and Store Data
		CallTable(Micromet)
		CallTable(Table2)
	NextScan
	
SlowSequence
  Scan(30,min,3,0)
    
'    CWB100RSSI()      ' for troublshooting signal strength issues
'    CWB100Routes()    ' for troubleshooting routing issues
    If IfTime (0,4,Hr) = True Then
      CWB100Routes (5,WirelessRoutes)
      CWB100RSSI (5)
      CallTable (Diag)
    EndIf

    'Example program had the CWB100 command before the CWB100RSSI command, this is incorrect!  
    CWB100(5,cwb100_fields,"CPU:CWSConfig.txt")
  
    CallTable(VWC)
  NextScan
EndProg


