![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
IGGE Power board
Dependencies: mbed ADS1015 USBDevice MCP4725
main.cpp@5:6b90ed7f3eb1, 2014-04-07 (annotated)
- Committer:
- jamesdem1123
- Date:
- Mon Apr 07 06:42:13 2014 +0000
- Revision:
- 5:6b90ed7f3eb1
- Parent:
- 4:d29a7b77b1c6
- Child:
- 6:7691e36d2337
ads conversion factor= * .003 , others *3.3 /65536
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jamesdem1123 | 1:dd6f8dc1e54e | 1 | |
jamesdem1123 | 0:54d5ccfcb14c | 2 | #include "mbed.h" |
jamesdem1123 | 1:dd6f8dc1e54e | 3 | #include "Adafruit_ADS1015.h" |
jamesdem1123 | 4:d29a7b77b1c6 | 4 | //#include "USBSerial.h" |
jamesdem1123 | 1:dd6f8dc1e54e | 5 | |
jamesdem1123 | 4:d29a7b77b1c6 | 6 | #include <iostream> |
jamesdem1123 | 4:d29a7b77b1c6 | 7 | #include <map> |
jamesdem1123 | 4:d29a7b77b1c6 | 8 | #include <string> |
jamesdem1123 | 4:d29a7b77b1c6 | 9 | #include <stdio.h> |
jamesdem1123 | 4:d29a7b77b1c6 | 10 | |
jamesdem1123 | 4:d29a7b77b1c6 | 11 | //#define SERIAL_BAUD_RATE 9600 |
jamesdem1123 | 1:dd6f8dc1e54e | 12 | |
jamesdem1123 | 1:dd6f8dc1e54e | 13 | //library function setup |
jamesdem1123 | 1:dd6f8dc1e54e | 14 | I2C i2c(p28, p27); |
jamesdem1123 | 1:dd6f8dc1e54e | 15 | Adafruit_ADS1015 ads(&i2c); |
jamesdem1123 | 4:d29a7b77b1c6 | 16 | //USBSerial pc; // USB CDC serial port |
jamesdem1123 | 2:321c8783ea30 | 17 | Ticker graph; |
jamesdem1123 | 1:dd6f8dc1e54e | 18 | |
jamesdem1123 | 4:d29a7b77b1c6 | 19 | |
jamesdem1123 | 4:d29a7b77b1c6 | 20 | //can stuff |
jamesdem1123 | 4:d29a7b77b1c6 | 21 | Ticker ticker; |
jamesdem1123 | 4:d29a7b77b1c6 | 22 | CAN can1(p9, p10); |
jamesdem1123 | 4:d29a7b77b1c6 | 23 | CAN can2(p30, p29); |
jamesdem1123 | 4:d29a7b77b1c6 | 24 | char counter[8] = {1,1,1,1,1,1,1,1}; |
jamesdem1123 | 4:d29a7b77b1c6 | 25 | int test=0x0; |
jamesdem1123 | 4:d29a7b77b1c6 | 26 | char counter2=0; |
jamesdem1123 | 4:d29a7b77b1c6 | 27 | |
jamesdem1123 | 4:d29a7b77b1c6 | 28 | |
jamesdem1123 | 4:d29a7b77b1c6 | 29 | |
jamesdem1123 | 1:dd6f8dc1e54e | 30 | //leds |
jamesdem1123 | 1:dd6f8dc1e54e | 31 | DigitalOut led0(LED1); |
jamesdem1123 | 1:dd6f8dc1e54e | 32 | DigitalOut led1(LED2); |
jamesdem1123 | 1:dd6f8dc1e54e | 33 | DigitalOut led2(LED3); |
jamesdem1123 | 1:dd6f8dc1e54e | 34 | DigitalOut led3(LED4); |
jamesdem1123 | 0:54d5ccfcb14c | 35 | |
jamesdem1123 | 1:dd6f8dc1e54e | 36 | //current readings |
jamesdem1123 | 4:d29a7b77b1c6 | 37 | AnalogIn iBat(p15); //75a PROTO |
jamesdem1123 | 1:dd6f8dc1e54e | 38 | AnalogIn iTwelve(p17); //31a |
jamesdem1123 | 4:d29a7b77b1c6 | 39 | AnalogIn iFive(p18);//31a PROTO |
jamesdem1123 | 1:dd6f8dc1e54e | 40 | AnalogIn iMot(p16);//75a |
jamesdem1123 | 1:dd6f8dc1e54e | 41 | AnalogIn iCpu(p20);//31a |
jamesdem1123 | 1:dd6f8dc1e54e | 42 | AnalogIn iPeri(p19);//31a |
jamesdem1123 | 1:dd6f8dc1e54e | 43 | |
jamesdem1123 | 1:dd6f8dc1e54e | 44 | //voltage scalers |
jamesdem1123 | 1:dd6f8dc1e54e | 45 | #define batScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 46 | #define motScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 47 | #define twelveScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 48 | #define fiveScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 49 | |
jamesdem1123 | 1:dd6f8dc1e54e | 50 | //Relays |
jamesdem1123 | 5:6b90ed7f3eb1 | 51 | DigitalOut relSens(p21); // PROTO |
jamesdem1123 | 1:dd6f8dc1e54e | 52 | DigitalOut relUsr(p22); |
jamesdem1123 | 1:dd6f8dc1e54e | 53 | DigitalOut relNet(p23); |
jamesdem1123 | 3:a01ea06ca9ab | 54 | DigitalOut relCpuRst(p24); |
jamesdem1123 | 1:dd6f8dc1e54e | 55 | DigitalOut relCpuPower(p25); |
jamesdem1123 | 1:dd6f8dc1e54e | 56 | |
jamesdem1123 | 0:54d5ccfcb14c | 57 | |
jamesdem1123 | 1:dd6f8dc1e54e | 58 | //30 minute graph arrays |
jamesdem1123 | 4:d29a7b77b1c6 | 59 | uint16_t powerArr [10]; //{iBat,vBat,iTwelve, vTwelve, iFive, vFive, iMot, vMot, iCpu, iPeri} |
jamesdem1123 | 5:6b90ed7f3eb1 | 60 | uint16_t ibat,vbat,itwelve, vtwelve, ifive, vfive, imot, vmot, icpu, iperi= 0; |
jamesdem1123 | 4:d29a7b77b1c6 | 61 | |
jamesdem1123 | 1:dd6f8dc1e54e | 62 | |
jamesdem1123 | 1:dd6f8dc1e54e | 63 | |
jamesdem1123 | 1:dd6f8dc1e54e | 64 | //volt |
jamesdem1123 | 1:dd6f8dc1e54e | 65 | uint16_t vBat, vTwelve,vFive,vMot ; |
jamesdem1123 | 1:dd6f8dc1e54e | 66 | |
jamesdem1123 | 2:321c8783ea30 | 67 | |
jamesdem1123 | 4:d29a7b77b1c6 | 68 | |
jamesdem1123 | 4:d29a7b77b1c6 | 69 | void sending_values(long int int1,long int int2,long int int3,long int int4, int ID ) |
jamesdem1123 | 4:d29a7b77b1c6 | 70 | { |
jamesdem1123 | 4:d29a7b77b1c6 | 71 | //val(); |
jamesdem1123 | 5:6b90ed7f3eb1 | 72 | led1=1; |
jamesdem1123 | 4:d29a7b77b1c6 | 73 | counter[0]=int1 >> 8; |
jamesdem1123 | 4:d29a7b77b1c6 | 74 | counter[1]=int1 & 0xFF; |
jamesdem1123 | 4:d29a7b77b1c6 | 75 | counter[2]=int2 >> 8; |
jamesdem1123 | 4:d29a7b77b1c6 | 76 | counter[3]=int2 & 0xFF; |
jamesdem1123 | 4:d29a7b77b1c6 | 77 | counter[4]=int3 >> 8; |
jamesdem1123 | 4:d29a7b77b1c6 | 78 | counter[5]=int3 & 0xFF; |
jamesdem1123 | 4:d29a7b77b1c6 | 79 | counter[6]=int4 >> 8; |
jamesdem1123 | 4:d29a7b77b1c6 | 80 | counter[7]=int4 & 0xFF; |
jamesdem1123 | 5:6b90ed7f3eb1 | 81 | |
jamesdem1123 | 4:d29a7b77b1c6 | 82 | if(can1.write(CANMessage(ID, counter, 8))) { |
jamesdem1123 | 5:6b90ed7f3eb1 | 83 | |
jamesdem1123 | 4:d29a7b77b1c6 | 84 | printf("Message sent: %x%x\r\n", counter[1],counter[0]); |
jamesdem1123 | 4:d29a7b77b1c6 | 85 | printf("Should be: %d, %d, %d, %d\r\n", int1,int2,int3,int4); |
jamesdem1123 | 5:6b90ed7f3eb1 | 86 | } |
jamesdem1123 | 5:6b90ed7f3eb1 | 87 | led1=0; |
jamesdem1123 | 4:d29a7b77b1c6 | 88 | } |
jamesdem1123 | 4:d29a7b77b1c6 | 89 | |
jamesdem1123 | 4:d29a7b77b1c6 | 90 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 91 | |
jamesdem1123 | 4:d29a7b77b1c6 | 92 | |
jamesdem1123 | 4:d29a7b77b1c6 | 93 | |
jamesdem1123 | 4:d29a7b77b1c6 | 94 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 95 | void Can_main(bool send,long int val1,long int val2,long int val3,long int val4, int the_ID) |
jamesdem1123 | 5:6b90ed7f3eb1 | 96 | { |
jamesdem1123 | 4:d29a7b77b1c6 | 97 | |
jamesdem1123 | 4:d29a7b77b1c6 | 98 | std::map <int,string> CanIDMap; |
jamesdem1123 | 4:d29a7b77b1c6 | 99 | |
jamesdem1123 | 4:d29a7b77b1c6 | 100 | //CanIDMap[0]="Motor Controller String"; |
jamesdem1123 | 4:d29a7b77b1c6 | 101 | CanIDMap[1]="Motor Controller Ints"; |
jamesdem1123 | 4:d29a7b77b1c6 | 102 | //CanIDMap[2]="Power Controller Voltage_Battery"; |
jamesdem1123 | 4:d29a7b77b1c6 | 103 | CanIDMap[3]="Power Controller Voltage_5V"; |
jamesdem1123 | 4:d29a7b77b1c6 | 104 | //CanIDMap[4]="Power Controller Voltage_12V"; |
jamesdem1123 | 4:d29a7b77b1c6 | 105 | CanIDMap[5]="Power Controller Voltage_Motor"; |
jamesdem1123 | 4:d29a7b77b1c6 | 106 | CanIDMap[6]="Power Controller Current_Battery"; |
jamesdem1123 | 4:d29a7b77b1c6 | 107 | CanIDMap[7]="Power Controller Current_5V"; |
jamesdem1123 | 4:d29a7b77b1c6 | 108 | CanIDMap[8]="Power Controller Current_12V"; |
jamesdem1123 | 4:d29a7b77b1c6 | 109 | CanIDMap[9]="Power Controller Current_Motor"; |
jamesdem1123 | 4:d29a7b77b1c6 | 110 | CanIDMap[10]="LCD Controller String"; |
jamesdem1123 | 4:d29a7b77b1c6 | 111 | CanIDMap[11]="LCD Controller Ints"; |
jamesdem1123 | 4:d29a7b77b1c6 | 112 | CanIDMap[12]="Zac is the Best"; |
jamesdem1123 | 4:d29a7b77b1c6 | 113 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 114 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 115 | |
jamesdem1123 | 4:d29a7b77b1c6 | 116 | //ticker.attach(&sending_values,1); |
jamesdem1123 | 4:d29a7b77b1c6 | 117 | CANMessage msg; |
jamesdem1123 | 4:d29a7b77b1c6 | 118 | int fixer1=0; |
jamesdem1123 | 4:d29a7b77b1c6 | 119 | int fixer2=0; |
jamesdem1123 | 4:d29a7b77b1c6 | 120 | int fixer3=0; |
jamesdem1123 | 4:d29a7b77b1c6 | 121 | int fixer4=0; |
jamesdem1123 | 5:6b90ed7f3eb1 | 122 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 123 | if (send==true) { |
jamesdem1123 | 4:d29a7b77b1c6 | 124 | sending_values(val1,val2,val3,val4,the_ID); |
jamesdem1123 | 5:6b90ed7f3eb1 | 125 | } |
jamesdem1123 | 5:6b90ed7f3eb1 | 126 | if(can2.read(msg)) { |
jamesdem1123 | 5:6b90ed7f3eb1 | 127 | bool tester= CanIDMap.find(msg.id) != CanIDMap.end(); |
jamesdem1123 | 5:6b90ed7f3eb1 | 128 | if (tester) { |
jamesdem1123 | 4:d29a7b77b1c6 | 129 | printf("Message received: %x %x \r\n", msg.data[0], msg.data[1]); |
jamesdem1123 | 5:6b90ed7f3eb1 | 130 | |
jamesdem1123 | 4:d29a7b77b1c6 | 131 | //printf("ID of message: %s \r\n", CanIDMap[msg.id]); |
jamesdem1123 | 5:6b90ed7f3eb1 | 132 | |
jamesdem1123 | 4:d29a7b77b1c6 | 133 | std::string str=CanIDMap[msg.id]; |
jamesdem1123 | 4:d29a7b77b1c6 | 134 | unsigned pos = str.find("_"); // position of "_" in str |
jamesdem1123 | 4:d29a7b77b1c6 | 135 | std::string str3 = str.substr (pos+1); // get from past"_" to the end |
jamesdem1123 | 5:6b90ed7f3eb1 | 136 | // printf("Dealing with: %s \r\n",str3); |
jamesdem1123 | 4:d29a7b77b1c6 | 137 | fixer1=((msg.data[0]<<8) | (msg.data[1])); |
jamesdem1123 | 4:d29a7b77b1c6 | 138 | fixer2=((msg.data[2]<<8) | (msg.data[3])); |
jamesdem1123 | 4:d29a7b77b1c6 | 139 | fixer3=((msg.data[4]<<8) | (msg.data[5])); |
jamesdem1123 | 4:d29a7b77b1c6 | 140 | fixer4=((msg.data[6]<<8) | (msg.data[7])); |
jamesdem1123 | 4:d29a7b77b1c6 | 141 | led2 = !led2; |
jamesdem1123 | 5:6b90ed7f3eb1 | 142 | |
jamesdem1123 | 4:d29a7b77b1c6 | 143 | printf("Resulting Answer back is: %d, %d, %d, %d\r\n\r\n\r\n",fixer1,fixer2,fixer3,fixer4 ); |
jamesdem1123 | 5:6b90ed7f3eb1 | 144 | |
jamesdem1123 | 4:d29a7b77b1c6 | 145 | } |
jamesdem1123 | 4:d29a7b77b1c6 | 146 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 147 | else { |
jamesdem1123 | 5:6b90ed7f3eb1 | 148 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 149 | printf("Can Message, not related to this controller\r\n\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 150 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 151 | } |
jamesdem1123 | 5:6b90ed7f3eb1 | 152 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 153 | //wait(0.2); |
jamesdem1123 | 4:d29a7b77b1c6 | 154 | } |
jamesdem1123 | 4:d29a7b77b1c6 | 155 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 156 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 157 | |
jamesdem1123 | 4:d29a7b77b1c6 | 158 | |
jamesdem1123 | 4:d29a7b77b1c6 | 159 | |
jamesdem1123 | 4:d29a7b77b1c6 | 160 | } |
jamesdem1123 | 4:d29a7b77b1c6 | 161 | |
jamesdem1123 | 4:d29a7b77b1c6 | 162 | |
jamesdem1123 | 4:d29a7b77b1c6 | 163 | |
jamesdem1123 | 4:d29a7b77b1c6 | 164 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 165 | void sendArray (void) |
jamesdem1123 | 2:321c8783ea30 | 166 | { |
jamesdem1123 | 4:d29a7b77b1c6 | 167 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 168 | printf("___________________________\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 169 | printf("Sending messages....\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 170 | printf("Message id 1: Batt Cur = %d, Batt Volt = %d, Twelve Cur = %d, Twelve Volt = %d....",powerArr[0],powerArr[1],powerArr[2],powerArr[3]); |
jamesdem1123 | 5:6b90ed7f3eb1 | 171 | sending_values(powerArr[0],powerArr[1],powerArr[2],powerArr[3],1); |
jamesdem1123 | 5:6b90ed7f3eb1 | 172 | printf("....sent\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 173 | printf("Message id 2: Five Cur = %d, Five Volt = %d, Mot Cur = %d, Mot Volt = %d....",powerArr[4],powerArr[5],powerArr[6],powerArr[7]); |
jamesdem1123 | 5:6b90ed7f3eb1 | 174 | sending_values(powerArr[4],powerArr[5],powerArr[6],powerArr[7],2); |
jamesdem1123 | 5:6b90ed7f3eb1 | 175 | printf("....sent\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 176 | printf("Message id 3: Cpu Cur = %d, Periferal Cur = %d, null, null....",powerArr[8],powerArr[9]); |
jamesdem1123 | 5:6b90ed7f3eb1 | 177 | sending_values(powerArr[8],powerArr[9],0,0,3); |
jamesdem1123 | 5:6b90ed7f3eb1 | 178 | printf("....sent\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 179 | printf("CANBUS TRANMISSION COMPLETE\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 180 | printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n"); |
jamesdem1123 | 5:6b90ed7f3eb1 | 181 | relNet=!relNet; |
jamesdem1123 | 5:6b90ed7f3eb1 | 182 | float neW =(powerArr[1]*.003); |
jamesdem1123 | 5:6b90ed7f3eb1 | 183 | printf("actual vbat= %2.4f volt\r\n", neW); |
jamesdem1123 | 5:6b90ed7f3eb1 | 184 | } |
jamesdem1123 | 2:321c8783ea30 | 185 | |
jamesdem1123 | 2:321c8783ea30 | 186 | |
jamesdem1123 | 2:321c8783ea30 | 187 | |
jamesdem1123 | 1:dd6f8dc1e54e | 188 | void setup(void) |
jamesdem1123 | 1:dd6f8dc1e54e | 189 | { |
jamesdem1123 | 5:6b90ed7f3eb1 | 190 | graph.attach(&sendArray, (1.5)); //update array every 10 seconds |
jamesdem1123 | 5:6b90ed7f3eb1 | 191 | // cantbus.frequency(500000); |
jamesdem1123 | 5:6b90ed7f3eb1 | 192 | // CANMessage can_MsgRx; |
jamesdem1123 | 5:6b90ed7f3eb1 | 193 | |
jamesdem1123 | 1:dd6f8dc1e54e | 194 | //initialize relays |
jamesdem1123 | 1:dd6f8dc1e54e | 195 | relSens= 0; |
jamesdem1123 | 1:dd6f8dc1e54e | 196 | relNet =0; |
jamesdem1123 | 1:dd6f8dc1e54e | 197 | relCpuPower=0; |
jamesdem1123 | 1:dd6f8dc1e54e | 198 | relCpuRst =0; |
jamesdem1123 | 1:dd6f8dc1e54e | 199 | relUsr=0; |
jamesdem1123 | 1:dd6f8dc1e54e | 200 | |
jamesdem1123 | 1:dd6f8dc1e54e | 201 | } |
jamesdem1123 | 1:dd6f8dc1e54e | 202 | |
jamesdem1123 | 1:dd6f8dc1e54e | 203 | |
jamesdem1123 | 2:321c8783ea30 | 204 | |
jamesdem1123 | 1:dd6f8dc1e54e | 205 | int main() |
jamesdem1123 | 1:dd6f8dc1e54e | 206 | { |
jamesdem1123 | 1:dd6f8dc1e54e | 207 | setup(); |
jamesdem1123 | 5:6b90ed7f3eb1 | 208 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 209 | |
jamesdem1123 | 1:dd6f8dc1e54e | 210 | while (1) { |
jamesdem1123 | 5:6b90ed7f3eb1 | 211 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 212 | |
jamesdem1123 | 2:321c8783ea30 | 213 | |
jamesdem1123 | 1:dd6f8dc1e54e | 214 | |
jamesdem1123 | 1:dd6f8dc1e54e | 215 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 216 | powerArr[0]=ibat = (iBat.read_u16()); |
jamesdem1123 | 5:6b90ed7f3eb1 | 217 | powerArr[1]=vBat = ads.readADC_SingleEnded(0); // read channel 0 PROTO |
jamesdem1123 | 5:6b90ed7f3eb1 | 218 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 219 | powerArr[2]=itwelve = (iTwelve.read_u16()); |
jamesdem1123 | 5:6b90ed7f3eb1 | 220 | powerArr[3]=vtwelve = ads.readADC_SingleEnded(1); // read channel 1 |
jamesdem1123 | 5:6b90ed7f3eb1 | 221 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 222 | powerArr[4]=ifive = (iFive.read_u16()); |
jamesdem1123 | 5:6b90ed7f3eb1 | 223 | powerArr[5]=vfive = ads.readADC_SingleEnded(2); // read channel 0 |
jamesdem1123 | 5:6b90ed7f3eb1 | 224 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 225 | powerArr[6]=imot = (iMot.read_u16()); |
jamesdem1123 | 5:6b90ed7f3eb1 | 226 | powerArr[7]=vmot = ads.readADC_SingleEnded(3); // read channel 0 |
jamesdem1123 | 5:6b90ed7f3eb1 | 227 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 228 | powerArr[8]=icpu = (iCpu.read_u16()); |
jamesdem1123 | 5:6b90ed7f3eb1 | 229 | powerArr[9]=iperi = (iPeri.read_u16()); |
jamesdem1123 | 5:6b90ed7f3eb1 | 230 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 231 | //powerArr[] = {ibat,vbat,itwelve, vtwelve, ifive, vfive, imot, vmot, icpu, iperi}; |
jamesdem1123 | 5:6b90ed7f3eb1 | 232 | |
jamesdem1123 | 5:6b90ed7f3eb1 | 233 | led0=!led0; |
jamesdem1123 | 4:d29a7b77b1c6 | 234 | |
jamesdem1123 | 0:54d5ccfcb14c | 235 | } |
jamesdem1123 | 0:54d5ccfcb14c | 236 | } |
jamesdem1123 | 1:dd6f8dc1e54e | 237 | |
jamesdem1123 | 1:dd6f8dc1e54e | 238 | |
jamesdem1123 | 1:dd6f8dc1e54e | 239 | |
jamesdem1123 | 1:dd6f8dc1e54e | 240 | |
jamesdem1123 | 1:dd6f8dc1e54e | 241 | |
jamesdem1123 | 1:dd6f8dc1e54e | 242 | |
jamesdem1123 | 1:dd6f8dc1e54e | 243 | |
jamesdem1123 | 1:dd6f8dc1e54e | 244 | |
jamesdem1123 | 1:dd6f8dc1e54e | 245 | |
jamesdem1123 | 1:dd6f8dc1e54e | 246 | |
jamesdem1123 | 1:dd6f8dc1e54e | 247 | |
jamesdem1123 | 1:dd6f8dc1e54e | 248 | |
jamesdem1123 | 1:dd6f8dc1e54e | 249 | |
jamesdem1123 | 4:d29a7b77b1c6 | 250 | |
jamesdem1123 | 4:d29a7b77b1c6 | 251 | |
jamesdem1123 | 4:d29a7b77b1c6 | 252 | |
jamesdem1123 | 4:d29a7b77b1c6 | 253 | |
jamesdem1123 | 4:d29a7b77b1c6 | 254 | |
jamesdem1123 | 4:d29a7b77b1c6 | 255 | |
jamesdem1123 | 4:d29a7b77b1c6 | 256 |