Calculates azimuth and elevation of a satellite dish based on its longitude, latitude and selected satellite.
Dependencies: PinDetect TextLCD mbed MODGPS
SatelliteList.cpp@0:fe8decc6a938, 2012-03-29 (annotated)
- Committer:
- BartJanssens
- Date:
- Thu Mar 29 09:26:14 2012 +0000
- Revision:
- 0:fe8decc6a938
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
BartJanssens | 0:fe8decc6a938 | 1 | #include "SatelliteList.h" |
BartJanssens | 0:fe8decc6a938 | 2 | #include <iostream> |
BartJanssens | 0:fe8decc6a938 | 3 | |
BartJanssens | 0:fe8decc6a938 | 4 | SatelliteList::SatelliteList(char *f, char delimiter){ |
BartJanssens | 0:fe8decc6a938 | 5 | |
BartJanssens | 0:fe8decc6a938 | 6 | string line; |
BartJanssens | 0:fe8decc6a938 | 7 | vector<string> v; |
BartJanssens | 0:fe8decc6a938 | 8 | |
BartJanssens | 0:fe8decc6a938 | 9 | sfile.open(f); |
BartJanssens | 0:fe8decc6a938 | 10 | if (sfile.is_open()) { |
BartJanssens | 0:fe8decc6a938 | 11 | while ( getline(sfile,line) ){ |
BartJanssens | 0:fe8decc6a938 | 12 | if( line.empty() ); // ignore empty lines |
BartJanssens | 0:fe8decc6a938 | 13 | else if (line.at(0) != ';'){ // ignore comments |
BartJanssens | 0:fe8decc6a938 | 14 | split( v, line, ';' ); |
BartJanssens | 0:fe8decc6a938 | 15 | //for ( int i = 0; i < v.size(); i++) printf("%s ",v[i].c_str()); |
BartJanssens | 0:fe8decc6a938 | 16 | //printf("\r\n"); |
BartJanssens | 0:fe8decc6a938 | 17 | if (v.size() == 4) { |
BartJanssens | 0:fe8decc6a938 | 18 | Satellite *s = new Satellite(v[0],v[1], ::atof(v[2].c_str()), ::atof(v[3].c_str())); |
BartJanssens | 0:fe8decc6a938 | 19 | clist.addNode(*s); |
BartJanssens | 0:fe8decc6a938 | 20 | delete s; |
BartJanssens | 0:fe8decc6a938 | 21 | } |
BartJanssens | 0:fe8decc6a938 | 22 | v.clear(); |
BartJanssens | 0:fe8decc6a938 | 23 | } |
BartJanssens | 0:fe8decc6a938 | 24 | } |
BartJanssens | 0:fe8decc6a938 | 25 | //printf("Size Circular List = %d \r\n", clist.getSize()); |
BartJanssens | 0:fe8decc6a938 | 26 | sfile.close(); |
BartJanssens | 0:fe8decc6a938 | 27 | } else printf("Can't open filename %s\r\n", f); |
BartJanssens | 0:fe8decc6a938 | 28 | } |
BartJanssens | 0:fe8decc6a938 | 29 | |
BartJanssens | 0:fe8decc6a938 | 30 | void SatelliteList::split(vector<string> & theStringVector, /* Altered/returned value */ |
BartJanssens | 0:fe8decc6a938 | 31 | const string & theString, |
BartJanssens | 0:fe8decc6a938 | 32 | const char theDelimiter) |
BartJanssens | 0:fe8decc6a938 | 33 | { |
BartJanssens | 0:fe8decc6a938 | 34 | |
BartJanssens | 0:fe8decc6a938 | 35 | |
BartJanssens | 0:fe8decc6a938 | 36 | size_t start = 0, end = 0; |
BartJanssens | 0:fe8decc6a938 | 37 | |
BartJanssens | 0:fe8decc6a938 | 38 | while ( end != string::npos) |
BartJanssens | 0:fe8decc6a938 | 39 | { |
BartJanssens | 0:fe8decc6a938 | 40 | end = theString.find( theDelimiter, start); |
BartJanssens | 0:fe8decc6a938 | 41 | |
BartJanssens | 0:fe8decc6a938 | 42 | |
BartJanssens | 0:fe8decc6a938 | 43 | theStringVector.push_back( theString.substr( start, |
BartJanssens | 0:fe8decc6a938 | 44 | (end == string::npos) ? string::npos : end - start)); |
BartJanssens | 0:fe8decc6a938 | 45 | |
BartJanssens | 0:fe8decc6a938 | 46 | |
BartJanssens | 0:fe8decc6a938 | 47 | start = ( ( end > (string::npos - 1) ) |
BartJanssens | 0:fe8decc6a938 | 48 | ? string::npos : end + 1); |
BartJanssens | 0:fe8decc6a938 | 49 | } |
BartJanssens | 0:fe8decc6a938 | 50 | } |
BartJanssens | 0:fe8decc6a938 | 51 | |
BartJanssens | 0:fe8decc6a938 | 52 | void SatelliteList::display() |
BartJanssens | 0:fe8decc6a938 | 53 | { |
BartJanssens | 0:fe8decc6a938 | 54 | string n, c ; |
BartJanssens | 0:fe8decc6a938 | 55 | float o,i ; |
BartJanssens | 0:fe8decc6a938 | 56 | |
BartJanssens | 0:fe8decc6a938 | 57 | clist.toHead(); |
BartJanssens | 0:fe8decc6a938 | 58 | for ( int j = 0; j < clist.getSize(); j++) { |
BartJanssens | 0:fe8decc6a938 | 59 | Satellite *s = clist.getNode(); |
BartJanssens | 0:fe8decc6a938 | 60 | n = s->getName(); |
BartJanssens | 0:fe8decc6a938 | 61 | c = s->getCname(); |
BartJanssens | 0:fe8decc6a938 | 62 | o = s->getOrbit(); |
BartJanssens | 0:fe8decc6a938 | 63 | i = s->getInclination(); |
BartJanssens | 0:fe8decc6a938 | 64 | printf("Size = %d i = %d Name = %s Cname = %s \r\n",clist.getSize(), j, n.c_str(), c.c_str()); |
BartJanssens | 0:fe8decc6a938 | 65 | clist.moveForward(); |
BartJanssens | 0:fe8decc6a938 | 66 | } |
BartJanssens | 0:fe8decc6a938 | 67 | } |
BartJanssens | 0:fe8decc6a938 | 68 | |
BartJanssens | 0:fe8decc6a938 | 69 | Satellite * SatelliteList::getNext() |
BartJanssens | 0:fe8decc6a938 | 70 | { |
BartJanssens | 0:fe8decc6a938 | 71 | clist.moveForward(); |
BartJanssens | 0:fe8decc6a938 | 72 | Satellite *s = clist.getNode(); |
BartJanssens | 0:fe8decc6a938 | 73 | return(s); |
BartJanssens | 0:fe8decc6a938 | 74 | } |
BartJanssens | 0:fe8decc6a938 | 75 | |
BartJanssens | 0:fe8decc6a938 | 76 | Satellite * SatelliteList::getPrev() |
BartJanssens | 0:fe8decc6a938 | 77 | { |
BartJanssens | 0:fe8decc6a938 | 78 | clist.moveBackward(); |
BartJanssens | 0:fe8decc6a938 | 79 | Satellite *s = clist.getNode(); |
BartJanssens | 0:fe8decc6a938 | 80 | return(s); |
BartJanssens | 0:fe8decc6a938 | 81 | } |
BartJanssens | 0:fe8decc6a938 | 82 | |
BartJanssens | 0:fe8decc6a938 | 83 | Satellite * SatelliteList::getCurrent() |
BartJanssens | 0:fe8decc6a938 | 84 | { if (!clist.isEmpty()) { |
BartJanssens | 0:fe8decc6a938 | 85 | Satellite *s = clist.getNode(); |
BartJanssens | 0:fe8decc6a938 | 86 | return(s); |
BartJanssens | 0:fe8decc6a938 | 87 | } |
BartJanssens | 0:fe8decc6a938 | 88 | } |