Subversion Repositories public

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
93 andreas 1
#include "config.h"
2
#include "garmin.h"
3
 
4
 
5
/* Given a garmin_pid, translate to a link packet ID */
6
 
7
uint16
8
garmin_lpid ( link_protocol link, garmin_pid gpid )
9
{
10
  uint16 lpid = 0x0000;
11
 
12
  switch ( link ) {
13
  case link_L001:
14
    switch ( gpid ) { 
15
    case Pid_Protocol_Array:       lpid = L000_Pid_Protocol_Array;       break;
16
    case Pid_Product_Rqst:         lpid = L000_Pid_Product_Rqst;         break;
17
    case Pid_Product_Data:         lpid = L000_Pid_Product_Data;         break;
18
    case Pid_Ext_Product_Data:     lpid = L000_Pid_Ext_Product_Data;     break;
19
    case Pid_Almanac_Data:         lpid = L001_Pid_Almanac_Data;         break;
20
    case Pid_Command_Data:         lpid = L001_Pid_Command_Data;         break;
21
    case Pid_Xfer_Cmplt:           lpid = L001_Pid_Xfer_Cmplt;           break;
22
    case Pid_Date_Time_Data:       lpid = L001_Pid_Date_Time_Data;       break;
23
    case Pid_Position_Data:        lpid = L001_Pid_Position_Data;        break;
24
    case Pid_Prx_Wpt_Data:         lpid = L001_Pid_Prx_Wpt_Data;         break;
25
    case Pid_Records:              lpid = L001_Pid_Records;              break;
26
    case Pid_Rte_Hdr:              lpid = L001_Pid_Rte_Hdr;              break;
27
    case Pid_Rte_Wpt_Data:         lpid = L001_Pid_Rte_Wpt_Data;         break;
28
    case Pid_Wpt_Data:             lpid = L001_Pid_Rte_Wpt_Data;         break;
29
    case Pid_Trk_Data:             lpid = L001_Pid_Trk_Data;             break;
30
    case Pid_Pvt_Data:             lpid = L001_Pid_Pvt_Data;             break;
31
    case Pid_Rte_Link_Data:        lpid = L001_Pid_Rte_Link_Data;        break;
32
    case Pid_Trk_Hdr:              lpid = L001_Pid_Trk_Hdr;              break;
33
    case Pid_FlightBook_Record:    lpid = L001_Pid_FlightBook_Record;    break;
34
    case Pid_Lap:                  lpid = L001_Pid_Lap;                  break;
35
    case Pid_Wpt_Cat:              lpid = L001_Pid_Wpt_Cat;              break;
36
    case Pid_Run:                  lpid = L001_Pid_Run;                  break;
37
    case Pid_Workout:              lpid = L001_Pid_Workout;              break;
38
    case Pid_Workout_Occurrence:   lpid = L001_Pid_Workout_Occurrence;   break;
39
    case Pid_Fitness_User_Profile: lpid = L001_Pid_Fitness_User_Profile; break;
40
    case Pid_Workout_Limits:       lpid = L001_Pid_Workout_Limits;       break;
41
    case Pid_Course:               lpid = L001_Pid_Course;               break;
42
    case Pid_Course_Lap:           lpid = L001_Pid_Course_Lap;           break;
43
    case Pid_Course_Point:         lpid = L001_Pid_Course_Point;         break;
44
    case Pid_Course_Trk_Hdr:       lpid = L001_Pid_Course_Trk_Hdr;       break;
45
    case Pid_Course_Trk_Data:      lpid = L001_Pid_Course_Trk_Data;      break;
46
    case Pid_Course_Limits:        lpid = L001_Pid_Course_Limits;        break;
47
    default:                                                             break;
48
    }
49
    break;
50
  case link_L002:
51
    switch ( gpid ) {
52
    case Pid_Protocol_Array:       lpid = L000_Pid_Protocol_Array;       break;
53
    case Pid_Product_Rqst:         lpid = L000_Pid_Product_Rqst;         break;
54
    case Pid_Product_Data:         lpid = L000_Pid_Product_Data;         break;
55
    case Pid_Ext_Product_Data:     lpid = L000_Pid_Ext_Product_Data;     break;
56
    case Pid_Almanac_Data:         lpid = L002_Pid_Almanac_Data;         break;
57
    case Pid_Command_Data:         lpid = L002_Pid_Command_Data;         break;
58
    case Pid_Xfer_Cmplt:           lpid = L002_Pid_Xfer_Cmplt;           break;
59
    case Pid_Date_Time_Data:       lpid = L002_Pid_Date_Time_Data;       break;
60
    case Pid_Position_Data:        lpid = L002_Pid_Position_Data;        break;
61
    case Pid_Prx_Wpt_Data:         lpid = L002_Pid_Prx_Wpt_Data;         break;
62
    case Pid_Records:              lpid = L002_Pid_Records;              break;
63
    case Pid_Rte_Hdr:              lpid = L002_Pid_Rte_Hdr;              break;
64
    case Pid_Rte_Wpt_Data:         lpid = L002_Pid_Rte_Wpt_Data;         break;
65
    case Pid_Wpt_Data:             lpid = L002_Pid_Rte_Wpt_Data;         break;
66
    default:                                                             break;
67
    }
68
    break;
69
  default:
70
    break;
71
  }
72
 
73
  return lpid;
74
}
75
 
76
 
77
/* Given a link-specific PID, translate it to a garmin packet ID. */
78
 
79
garmin_pid
80
garmin_gpid ( link_protocol link, uint16 lpid )
81
{
82
  garmin_pid gpid = Pid_Nil;
83
 
84
  switch ( link ) {
85
  case link_L001:
86
    switch ( lpid ) { 
87
    case L000_Pid_Protocol_Array:       gpid = Pid_Protocol_Array;       break;
88
    case L000_Pid_Product_Rqst:         gpid = Pid_Product_Rqst;         break;
89
    case L000_Pid_Product_Data:         gpid = Pid_Product_Data;         break;
90
    case L000_Pid_Ext_Product_Data:     gpid = Pid_Ext_Product_Data;     break;
91
    case L001_Pid_Almanac_Data:         gpid = Pid_Almanac_Data;         break;
92
    case L001_Pid_Command_Data:         gpid = Pid_Command_Data;         break;
93
    case L001_Pid_Xfer_Cmplt:           gpid = Pid_Xfer_Cmplt;           break;
94
    case L001_Pid_Date_Time_Data:       gpid = Pid_Date_Time_Data;       break;
95
    case L001_Pid_Position_Data:        gpid = Pid_Position_Data;        break;
96
    case L001_Pid_Prx_Wpt_Data:         gpid = Pid_Prx_Wpt_Data;         break;
97
    case L001_Pid_Records:              gpid = Pid_Records;              break;
98
    case L001_Pid_Rte_Hdr:              gpid = Pid_Rte_Hdr;              break;
99
    case L001_Pid_Rte_Wpt_Data:         gpid = Pid_Rte_Wpt_Data;         break;
100
    case L001_Pid_Wpt_Data:             gpid = Pid_Rte_Wpt_Data;         break;
101
    case L001_Pid_Trk_Data:             gpid = Pid_Trk_Data;             break;
102
    case L001_Pid_Pvt_Data:             gpid = Pid_Pvt_Data;             break;
103
    case L001_Pid_Rte_Link_Data:        gpid = Pid_Rte_Link_Data;        break;
104
    case L001_Pid_Trk_Hdr:              gpid = Pid_Trk_Hdr;              break;
105
    case L001_Pid_FlightBook_Record:    gpid = Pid_FlightBook_Record;    break;
106
    case L001_Pid_Lap:                  gpid = Pid_Lap;                  break;
107
    case L001_Pid_Wpt_Cat:              gpid = Pid_Wpt_Cat;              break;
108
    case L001_Pid_Run:                  gpid = Pid_Run;                  break;
109
    case L001_Pid_Workout:              gpid = Pid_Workout;              break;
110
    case L001_Pid_Workout_Occurrence:   gpid = Pid_Workout_Occurrence;   break;
111
    case L001_Pid_Fitness_User_Profile: gpid = Pid_Fitness_User_Profile; break;
112
    case L001_Pid_Workout_Limits:       gpid = Pid_Workout_Limits;       break;
113
    case L001_Pid_Course:               gpid = Pid_Course;               break;
114
    case L001_Pid_Course_Lap:           gpid = Pid_Course_Lap;           break;
115
    case L001_Pid_Course_Point:         gpid = Pid_Course_Point;         break;
116
    case L001_Pid_Course_Trk_Hdr:       gpid = Pid_Course_Trk_Hdr;       break;
117
    case L001_Pid_Course_Trk_Data:      gpid = Pid_Course_Trk_Data;      break;
118
    case L001_Pid_Course_Limits:        gpid = Pid_Course_Limits;        break;
119
    default:                                                             break;
120
    }
121
    break;
122
  case link_L002:
123
    switch ( lpid ) {
124
    case L000_Pid_Protocol_Array:       gpid = Pid_Protocol_Array;       break;
125
    case L000_Pid_Product_Rqst:         gpid = Pid_Product_Rqst;         break;
126
    case L000_Pid_Product_Data:         gpid = Pid_Product_Data;         break;
127
    case L000_Pid_Ext_Product_Data:     gpid = Pid_Ext_Product_Data;     break;
128
    case L002_Pid_Almanac_Data:         gpid = Pid_Almanac_Data;         break;
129
    case L002_Pid_Command_Data:         gpid = Pid_Command_Data;         break;
130
    case L002_Pid_Xfer_Cmplt:           gpid = Pid_Xfer_Cmplt;           break;
131
    case L002_Pid_Date_Time_Data:       gpid = Pid_Date_Time_Data;       break;
132
    case L002_Pid_Position_Data:        gpid = Pid_Position_Data;        break;
133
    case L002_Pid_Prx_Wpt_Data:         gpid = Pid_Prx_Wpt_Data;         break;
134
    case L002_Pid_Records:              gpid = Pid_Records;              break;
135
    case L002_Pid_Rte_Hdr:              gpid = Pid_Rte_Hdr;              break;
136
    case L002_Pid_Rte_Wpt_Data:         gpid = Pid_Rte_Wpt_Data;         break;
137
    case L002_Pid_Wpt_Data:             gpid = Pid_Rte_Wpt_Data;         break;
138
    default:                                                             break;
139
    }
140
    break;
141
  default:
142
    break;
143
  }
144
 
145
  return gpid;
146
}