202 lines
17 KiB
C++
202 lines
17 KiB
C++
#ifndef _DIVEPLANNER_DIVEPLANNER_HPP_
|
|
#define _DIVEPLANNER_DIVEPLANNER_HPP_
|
|
#include <proto/SurfaceInterval.hpp>
|
|
#include <proto/SurfaceTime.hpp>
|
|
#include <proto/TimeInterval.hpp>
|
|
#include <common/string.hpp>
|
|
|
|
class DivePlanner
|
|
{
|
|
public:
|
|
enum Group{GroupA,GroupB,GroupC,GroupD,GroupE,GroupF,GroupG,GroupH,GroupI,GroupJ,
|
|
GroupK,GroupL,GroupM,GroupN,GroupO,GroupP,GroupQ,GroupR,GroupS,GroupT,
|
|
GroupU,GroupV,GroupW,GroupX,GroupY,GroupZ,GroupNone};
|
|
enum Depth{Depth35=0,Depth40,Depth50,Depth60,Depth70,Depth80,Depth90,Depth100,Depth110,Depth120,Depth130,Depth140,DepthNone};
|
|
Group getGroup(int depth,int minutes);
|
|
Group getGroup(const SurfaceTime &surfaceTime,Group pressureGroup);
|
|
void dumpTable(void);
|
|
private:
|
|
typedef SurfaceInterval SI;
|
|
typedef SurfaceTime ST;
|
|
typedef TimeInterval TI;
|
|
Depth getDepth(int actualDepth);
|
|
static int smGroupTable[][12];
|
|
static SI smSurfaceIntervalTable[][26];
|
|
static TI smTimeIntervalTable[][26];
|
|
};
|
|
|
|
int DivePlanner::smGroupTable[][12]={{10,9,7,6,5,4,4,3,3,3,3,4},
|
|
{19,16,13,11,9,8,7,6,6,5,5,4},
|
|
{25,22,17,14,12,10,9,8,7,6,6,5},
|
|
{29,25,19,16,13,11,10,9,8,7,7,6},
|
|
{32,27,21,17,15,13,11,10,9,8,8,7},
|
|
{36,31,24,19,16,14,12,11,10,9,8,8},
|
|
{40,34,26,21,18,15,13,12,11,10,9,-1},
|
|
{44,37,28,23,19,17,15,13,12,11,10,-1},
|
|
{48,40,31,25,21,18,16,14,13,12,-1,-1},
|
|
{52,44,33,27,22,19,17,15,14,12,-1,-1},
|
|
{57,48,36,29,24,21,18,16,14,13,-1,-1},
|
|
{62,51,39,31,26,22,19,17,15,-1,-1,-1},
|
|
{67,55,41,33,27,23,21,18,16,-1,-1,-1},
|
|
{73,60,44,35,29,25,22,19,-1,-1,-1,-1},
|
|
{79,64,47,37,31,26,23,20,-1,-1,-1,-1},
|
|
{85,69,50,39,33,28,24,-1,-1,-1,-1,-1},
|
|
{92,74,53,42,35,29,25,-1,-1,-1,-1,-1},
|
|
{100,79,57,44,36,30,-1,-1,-1,-1,-1,-1},
|
|
{108,85,60,47,38,-1,-1,-1,-1,-1,-1,-1},
|
|
{117,91,63,49,40,-1,-1,-1,-1,-1,-1,-1},
|
|
{127,97,67,52,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
{139,104,71,54,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
{152,111,75,55,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
{168,120,80,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
{188,129,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
|
{205,140,-1,-1,-1,-1,-1,-1,-1,-1,-1}};
|
|
|
|
|
|
DivePlanner::SI DivePlanner::smSurfaceIntervalTable[][26]=
|
|
{{SI(ST(0,0),ST(3,0)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(0,48),ST(3,48)),SI(ST(0,0),ST(0,47)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(1,10),ST(4,10)),SI(ST(0,22),ST(1,9)),SI(ST(0,0),ST(0,21)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(1,19),ST(4,19)),SI(ST(0,31),ST(1,18)),SI(ST(0,9),ST(0,30)),SI(ST(0,0),ST(0,8)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(1,28),ST(4,28)),SI(ST(0,39),ST(1,27)),SI(ST(0,17),ST(0,38)),SI(ST(0,8),ST(0,16)),SI(ST(0,0),ST(0,7)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(1,35),ST(4,35)),SI(ST(0,47),ST(1,34)),SI(ST(0,25),ST(0,46)),SI(ST(0,16),ST(0,24)),SI(ST(0,8),ST(0,15)),SI(ST(0,0),ST(0,7)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(1,42),ST(4,42)),SI(ST(0,54),ST(1,41)),SI(ST(0,32),ST(0,53)),SI(ST(0,23),ST(0,31)),SI(ST(0,14),ST(0,22)),SI(ST(0,7),ST(0,13)),SI(ST(0,0),ST(0,6)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(1,48),ST(4,48)),SI(ST(1,0),ST(1,47)),SI(ST(0,38),ST(0,59)),SI(ST(0,29),ST(0,37)),SI(ST(0,21),ST(0,28)),SI(ST(0,13),ST(0,20)),SI(ST(0,6),ST(0,12)),SI(ST(0,0),ST(0,5)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(1,54),ST(4,54)),SI(ST(1,6),ST(1,53)),SI(ST(0,44),ST(1,5)),SI(ST(0,35),ST(0,43)),SI(ST(0,27),ST(0,34)),SI(ST(0,19),ST(0,26)),SI(ST(0,12),ST(0,18)),SI(ST(0,6),ST(0,11)),SI(ST(0,0),ST(0,5)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,0),ST(5,0)),SI(ST(1,12),ST(1,59)),SI(ST(0,50),ST(1,11)),SI(ST(0,41),ST(0,49)),SI(ST(0,32),ST(0,40)),SI(ST(0,25),ST(0,31)),SI(ST(0,18),ST(0,24)),SI(ST(0,12),ST(0,17)),SI(ST(0,6),ST(0,11)),SI(ST(0,0),ST(0,5)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,5),ST(5,5)),SI(ST(1,17),ST(2,4)),SI(ST(0,55),ST(1,16)),SI(ST(0,46),ST(0,54)),SI(ST(0,38),ST(0,45)),SI(ST(0,30),ST(0,37)),SI(ST(0,23),ST(0,29)),SI(ST(0,17),ST(0,22)),SI(ST(0,11),ST(0,16)),SI(ST(0,5),ST(0,10)),SI(ST(0,0),ST(0,4)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,10),ST(5,10)),SI(ST(1,22),ST(2,9)),SI(ST(1,0),ST(1,21)),SI(ST(0,51),ST(0,59)),SI(ST(0,43),ST(0,50)),SI(ST(0,35),ST(0,42)),SI(ST(0,28),ST(0,34)),SI(ST(0,22),ST(0,27)),SI(ST(0,16),ST(0,21)),SI(ST(0,10),ST(0,15)),SI(ST(0,5),ST(0,9)),SI(ST(0,0),ST(0,4)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,15),ST(5,15)),SI(ST(1,26),ST(2,14)),SI(ST(1,5),ST(1,25)),SI(ST(0,56),ST(1,4)),SI(ST(0,47),ST(0,55)),SI(ST(0,40),ST(0,46)),SI(ST(0,33),ST(0,39)),SI(ST(0,26),ST(0,32)),SI(ST(0,20),ST(0,25)),SI(ST(0,15),ST(0,19)),SI(ST(0,10),ST(0,14)),SI(ST(0,5),ST(0,9)),SI(ST(0,0),ST(0,4)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,19),ST(5,19)),SI(ST(1,31),ST(2,18)),SI(ST(1,9),ST(1,30)),SI(ST(1,0),ST(1,8)),SI(ST(0,52),ST(0,59)),SI(ST(0,44),ST(0,51)),SI(ST(0,37),ST(0,43)),SI(ST(0,31),ST(0,36)),SI(ST(0,25),ST(0,30)),SI(ST(0,19),ST(0,24)),SI(ST(0,14),ST(0,18)),SI(ST(0,9),ST(0,13)),SI(ST(0,4),ST(0,8)),SI(ST(0,0),ST(0,3)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,24),ST(5,24)),SI(ST(1,35),ST(2,23)),SI(ST(1,13),ST(1,34)),SI(ST(1,4),ST(1,12)),SI(ST(0,56),ST(1,3)),SI(ST(0,48),ST(0,55)),SI(ST(0,42),ST(0,47)),SI(ST(0,35),ST(0,41)),SI(ST(0,29),ST(0,34)),SI(ST(0,24),ST(0,28)),SI(ST(0,18),ST(0,23)),SI(ST(0,13),ST(0,17)),SI(ST(0,9),ST(0,12)),SI(ST(0,4),ST(0,8)),SI(ST(0,0),ST(0,3)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,28),ST(5,28)),SI(ST(1,39),ST(2,27)),SI(ST(1,17),ST(1,38)),SI(ST(1,8),ST(1,16)),SI(ST(1,0),ST(1,7)),SI(ST(0,52),ST(0,59)),SI(ST(0,46),ST(0,51)),SI(ST(0,39),ST(0,45)),SI(ST(0,33),ST(0,38)),SI(ST(0,28),ST(0,32)),SI(ST(0,22),ST(0,27)),SI(ST(0,17),ST(0,21)),SI(ST(0,13),ST(0,16)),SI(ST(0,8),ST(0,12)),SI(ST(0,4),ST(0,7)),SI(ST(0,0),ST(0,3)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,31),ST(5,31)),SI(ST(1,43),ST(2,30)),SI(ST(1,21),ST(1,42)),SI(ST(1,12),ST(1,20)),SI(ST(1,4),ST(1,11)),SI(ST(0,56),ST(1,3)),SI(ST(0,49),ST(0,55)),SI(ST(0,43),ST(0,48)),SI(ST(0,37),ST(0,42)),SI(ST(0,31),ST(0,36)),SI(ST(0,26),ST(0,30)),SI(ST(0,21),ST(0,25)),SI(ST(0,17),ST(0,20)),SI(ST(0,12),ST(0,16)),SI(ST(0,8),ST(0,11)),SI(ST(0,4),ST(0,7)),SI(ST(0,0),ST(0,3)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,35),ST(5,35)),SI(ST(1,47),ST(2,34)),SI(ST(1,25),ST(1,46)),SI(ST(1,16),ST(1,24)),SI(ST(1,8),ST(1,15)),SI(ST(1,0),ST(1,7)),SI(ST(0,53),ST(0,59)),SI(ST(0,47),ST(0,52)),SI(ST(0,41),ST(0,46)),SI(ST(0,35),ST(0,40)),SI(ST(0,30),ST(0,34)),SI(ST(0,25),ST(0,29)),SI(ST(0,20),ST(0,24)),SI(ST(0,16),ST(0,19)),SI(ST(0,12),ST(0,15)),SI(ST(0,8),ST(0,11)),SI(ST(0,4),ST(0,7)),SI(ST(0,0),ST(0,3)),SI(),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,39),ST(5,39)),SI(ST(1,50),ST(2,38)),SI(ST(1,28),ST(1,49)),SI(ST(1,19),ST(1,27)),SI(ST(1,11),ST(1,18)),SI(ST(1,4),ST(1,10)),SI(ST(0,57),ST(1,3)),SI(ST(0,50),ST(0,56)),SI(ST(0,44),ST(0,49)),SI(ST(0,39),ST(0,43)),SI(ST(0,33),ST(0,38)),SI(ST(0,28),ST(0,32)),SI(ST(0,24),ST(0,27)),SI(ST(0,19),ST(0,23)),SI(ST(0,15),ST(0,18)),SI(ST(0,11),ST(0,14)),SI(ST(0,7),ST(0,10)),SI(ST(0,4),ST(0,6)),SI(ST(0,0),ST(0,3)),SI(),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,42),ST(5,42)),SI(ST(1,54),ST(2,41)),SI(ST(1,32),ST(1,53)),SI(ST(1,23),ST(1,31)),SI(ST(1,14),ST(1,22)),SI(ST(1,7),ST(1,13)),SI(ST(1,0),ST(1,6)),SI(ST(0,54),ST(0,59)),SI(ST(0,48),ST(0,53)),SI(ST(0,42),ST(0,47)),SI(ST(0,37),ST(0,41)),SI(ST(0,32),ST(0,36)),SI(ST(0,27),ST(0,31)),SI(ST(0,23),ST(0,26)),SI(ST(0,18),ST(0,22)),SI(ST(0,14),ST(0,17)),SI(ST(0,11),ST(0,13)),SI(ST(0,7),ST(0,10)),SI(ST(0,3),ST(0,6)),SI(ST(0,0),ST(0,2)),SI(),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,45),ST(5,45)),SI(ST(1,57),ST(2,44)),SI(ST(1,35),ST(1,56)),SI(ST(1,26),ST(1,34)),SI(ST(1,18),ST(1,25)),SI(ST(1,10),ST(1,17)),SI(ST(1,3),ST(1,9)),SI(ST(0,57),ST(1,2)),SI(ST(0,51),ST(0,56)),SI(ST(0,45),ST(0,50)),SI(ST(0,40),ST(0,44)),SI(ST(0,35),ST(0,39)),SI(ST(0,30),ST(0,34)),SI(ST(0,26),ST(0,29)),SI(ST(0,22),ST(0,25)),SI(ST(0,18),ST(0,21)),SI(ST(0,14),ST(0,17)),SI(ST(0,10),ST(0,13)),SI(ST(0,7),ST(0,9)),SI(ST(0,3),ST(0,6)),SI(ST(0,0),ST(0,2)),SI(),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,48),ST(5,48)),SI(ST(2,0),ST(2,47)),SI(ST(1,38),ST(1,59)),SI(ST(1,29),ST(1,37)),SI(ST(1,21),ST(1,28)),SI(ST(1,13),ST(1,20)),SI(ST(1,6),ST(1,12)),SI(ST(1,0),ST(1,5)),SI(ST(0,54),ST(0,59)),SI(ST(0,48),ST(0,53)),SI(ST(0,43),ST(0,47)),SI(ST(0,38),ST(0,42)),SI(ST(0,34),ST(0,37)),SI(ST(0,29),ST(0,33)),SI(ST(0,25),ST(0,28)),SI(ST(0,21),ST(0,24)),SI(ST(0,17),ST(0,20)),SI(ST(0,13),ST(0,16)),SI(ST(0,10),ST(0,12)),SI(ST(0,6),ST(0,9)),SI(ST(0,3),ST(0,5)),SI(ST(0,0),ST(0,2)),SI(),SI(),SI(),SI()},
|
|
{SI(ST(2,51),ST(5,51)),SI(ST(2,3),ST(2,50)),SI(ST(1,41),ST(2,2)),SI(ST(1,32),ST(1,40)),SI(ST(1,24),ST(1,31)),SI(ST(1,16),ST(1,23)),SI(ST(1,9),ST(1,15)),SI(ST(1,3),ST(1,8)),SI(ST(0,57),ST(1,2)),SI(ST(0,51),ST(0,56)),SI(ST(0,46),ST(0,50)),SI(ST(0,41),ST(0,45)),SI(ST(0,37),ST(0,40)),SI(ST(0,32),ST(0,36)),SI(ST(0,28),ST(0,31)),SI(ST(0,24),ST(0,27)),SI(ST(0,20),ST(0,23)),SI(ST(0,16),ST(0,19)),SI(ST(0,13),ST(0,15)),SI(ST(0,9),ST(0,12)),SI(ST(0,6),ST(0,8)),SI(ST(0,3),ST(0,5)),SI(ST(0,0),ST(0,2)),SI(),SI(),SI()},
|
|
{SI(ST(2,54),ST(5,54)),SI(ST(2,6),ST(2,53)),SI(ST(1,44),ST(2,5)),SI(ST(1,35),ST(1,43)),SI(ST(1,27),ST(1,34)),SI(ST(1,19),ST(1,26)),SI(ST(1,12),ST(1,18)),SI(ST(1,6),ST(1,11)),SI(ST(1,0),ST(1,5)),SI(ST(0,54),ST(0,59)),SI(ST(0,49),ST(0,53)),SI(ST(0,44),ST(0,48)),SI(ST(0,40),ST(0,43)),SI(ST(0,35),ST(0,39)),SI(ST(0,31),ST(0,34)),SI(ST(0,27),ST(0,30)),SI(ST(0,23),ST(0,26)),SI(ST(0,19),ST(0,22)),SI(ST(0,16),ST(0,18)),SI(ST(0,12),ST(0,15)),SI(ST(0,9),ST(0,11)),SI(ST(0,6),ST(0,8)),SI(ST(0,3),ST(0,5)),SI(ST(0,0),ST(0,2)),SI(),SI()},
|
|
{SI(ST(2,57),ST(5,57)),SI(ST(2,9),ST(2,56)),SI(ST(1,47),ST(2,8)),SI(ST(1,38),ST(1,46)),SI(ST(1,30),ST(1,37)),SI(ST(1,22),ST(1,29)),SI(ST(1,15),ST(1,21)),SI(ST(1,9),ST(1,14)),SI(ST(1,3),ST(1,8)),SI(ST(0,57),ST(1,2)),SI(ST(0,52),ST(0,56)),SI(ST(0,47),ST(0,51)),SI(ST(0,42),ST(0,46)),SI(ST(0,38),ST(0,41)),SI(ST(0,34),ST(0,37)),SI(ST(0,30),ST(0,33)),SI(ST(0,26),ST(0,29)),SI(ST(0,22),ST(0,25)),SI(ST(0,19),ST(0,21)),SI(ST(0,15),ST(0,18)),SI(ST(0,12),ST(0,14)),SI(ST(0,9),ST(0,11)),SI(ST(0,6),ST(0,8)),SI(ST(0,3),ST(0,5)),SI(ST(0,0),ST(0,2)),SI()},
|
|
{SI(ST(3,0),ST(6,0)),SI(ST(2,12),ST(2,59)),SI(ST(1,50),ST(2,11)),SI(ST(1,41),ST(1,49)),SI(ST(1,32),ST(1,40)),SI(ST(1,25),ST(1,31)),SI(ST(1,18),ST(1,24)),SI(ST(1,12),ST(1,17)),SI(ST(1,6),ST(1,11)),SI(ST(1,0),ST(1,5)),SI(ST(0,55),ST(0,59)),SI(ST(0,50),ST(0,54)),SI(ST(0,45),ST(0,49)),SI(ST(0,41),ST(0,44)),SI(ST(0,36),ST(0,40)),SI(ST(0,32),ST(0,35)),SI(ST(0,29),ST(0,31)),SI(ST(0,25),ST(0,28)),SI(ST(0,21),ST(0,24)),SI(ST(0,18),ST(0,20)),SI(ST(0,15),ST(0,17)),SI(ST(0,12),ST(0,14)),SI(ST(0,9),ST(0,11)),SI(ST(0,6),ST(0,8)),SI(ST(0,3),ST(0,5)),SI(ST(0,0),ST(0,2))}
|
|
};
|
|
|
|
DivePlanner::TI DivePlanner::smTimeIntervalTable[][26]=
|
|
{
|
|
{TI(10,195),TI(19,186),TI(25,180),TI(29,176),TI(32,173),TI(36,169),TI(40,165),TI(44,161),TI(48,157),TI(52,153),TI(57,148),TI(62,143),TI(67,138),TI(73,132),TI(79,126),TI(85,120),TI(92,113),TI(100,105),TI(108,97),TI(117,88),TI(127,78),TI(139,66),TI(152,53),TI(168,37),TI(188,17),TI(205,0)},
|
|
{TI(9,131),TI(16,124),TI(22,118),TI(25,115),TI(27,113),TI(31,109),TI(34,106),TI(37,103),TI(40,100),TI(44,96),TI(48,92),TI(51,89),TI(55,85),TI(60,80),TI(64,76),TI(69,71),TI(74,66),TI(79,61),TI(85,55),TI(91,49),TI(97,43),TI(104,36),TI(111,29),TI(120,20),TI(129,11),TI(140,0)},
|
|
{TI(7,73),TI(13,67),TI(17,63),TI(19,61),TI(21,59),TI(24,56),TI(26,54),TI(28,52),TI(31,49),TI(33,47),TI(36,44),TI(38,42),TI(41,39),TI(44,36),TI(47,33),TI(50,30),TI(53,27),TI(57,23),TI(60,20),TI(63,17),TI(67,13),TI(71,9),TI(75,5),TI(80,0),TI(),TI()},
|
|
{TI(6,49),TI(11,44),TI(14,41),TI(16,39),TI(17,38),TI(19,36),TI(21,34),TI(23,32),TI(25,30),TI(27,28),TI(29,26),TI(31,24),TI(33,22),TI(35,20),TI(37,18),TI(39,16),TI(42,13),TI(44,11),TI(47,8),TI(49,6),TI(52,3),TI(54,1),TI(55,0),TI(),TI(),TI()},
|
|
{TI(5,35),TI(9,31),TI(12,28),TI(13,27),TI(15,25),TI(16,24),TI(18,22),TI(19,21),TI(21,19),TI(22,18),TI(24,16),TI(26,14),TI(27,13),TI(29,11),TI(31,9),TI(33,7),TI(34,6),TI(36,4),TI(38,2),TI(40,0),TI(),TI(),TI(),TI(),TI(),TI()},
|
|
{TI(4,26),TI(8,22),TI(10,20),TI(11,19),TI(13,17),TI(14,16),TI(15,15),TI(17,13),TI(18,12),TI(19,11),TI(21,9),TI(22,8),TI(23,7),TI(25,5),TI(26,4),TI(28,2),TI(29,0),TI(30,0),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI()},
|
|
{TI(4,21),TI(7,18),TI(9,16),TI(10,15),TI(11,14),TI(12,13),TI(13,12),TI(15,10),TI(16,9),TI(17,8),TI(18,7),TI(19,6),TI(21,4),TI(22,3),TI(23,2),TI(24,0),TI(25,0),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI()},
|
|
{TI(3,17),TI(6,14),TI(8,12),TI(9,11),TI(10,10),TI(11,9),TI(12,8),TI(13,7),TI(14,6),TI(15,5),TI(16,4),TI(17,3),TI(18,2),TI(19,0),TI(20,0),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI()},
|
|
{TI(3,13),TI(6,10),TI(7,9),TI(8,8),TI(9,7),TI(10,6),TI(11,5),TI(12,4),TI(13,3),TI(14,2),TI(14,2),TI(15,0),TI(16,0),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI()},
|
|
{TI(3,10),TI(5,8),TI(6,7),TI(7,6),TI(8,5),TI(9,4),TI(10,3),TI(11,2),TI(12,0),TI(12,0),TI(13,0),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI()},
|
|
{TI(3,7),TI(5,5),TI(6,4),TI(7,3),TI(8,0),TI(8,0),TI(9,0),TI(10,0),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI(),TI()}
|
|
};
|
|
|
|
DivePlanner::Group DivePlanner::getGroup(int actualDepth,int actualMinutes)
|
|
{
|
|
Depth depth(getDepth(actualDepth));
|
|
Group group(GroupNone);
|
|
|
|
if(DepthNone==depth)return GroupNone;
|
|
for(int currGroup=GroupA;currGroup<=GroupZ;currGroup++)
|
|
{
|
|
if(actualMinutes<=smGroupTable[currGroup][depth])
|
|
{
|
|
group=Group(currGroup);
|
|
break;
|
|
}
|
|
}
|
|
return group;
|
|
}
|
|
|
|
DivePlanner::Group DivePlanner::getGroup(const SurfaceTime &surfaceTime,Group pressureGroup)
|
|
{
|
|
if(GroupNone==pressureGroup)return GroupNone;
|
|
for(int col=0;col<25;col++)
|
|
{
|
|
if(surfaceTime>=(smSurfaceIntervalTable[pressureGroup][col]).minTime()&&
|
|
surfaceTime<=(smSurfaceIntervalTable[pressureGroup][col]).maxTime())
|
|
return Group(col);
|
|
}
|
|
return GroupNone;
|
|
}
|
|
|
|
DivePlanner::Depth DivePlanner::getDepth(int actualDepth)
|
|
{
|
|
if(actualDepth<=35)return Depth35;
|
|
else if(actualDepth<=40)return Depth40;
|
|
else if(actualDepth<=50)return Depth50;
|
|
else if(actualDepth<=60)return Depth60;
|
|
else if(actualDepth<=70)return Depth70;
|
|
else if(actualDepth<=80)return Depth80;
|
|
else if(actualDepth<=90)return Depth90;
|
|
else if(actualDepth<=100)return Depth100;
|
|
else if(actualDepth<=110)return Depth110;
|
|
else if(actualDepth<=120)return Depth120;
|
|
else if(actualDepth<=130)return Depth130;
|
|
else if(actualDepth<=140)return Depth140;
|
|
else return DepthNone;
|
|
}
|
|
|
|
void DivePlanner::dumpTable(void)
|
|
{
|
|
::OutputDebugString("{\n");
|
|
for(int row=0;row<26;row++)
|
|
{
|
|
String strDebug;
|
|
String strCol;
|
|
|
|
for(int col=0;col<26;col++)
|
|
{
|
|
::sprintf(strCol,"{{%d,%d},{%d,%d}},",
|
|
(smSurfaceIntervalTable[row][col]).minTime().hours(),
|
|
(smSurfaceIntervalTable[row][col]).minTime().minutes(),
|
|
(smSurfaceIntervalTable[row][col]).maxTime().hours(),
|
|
(smSurfaceIntervalTable[row][col]).maxTime().minutes());
|
|
strDebug+=strCol;
|
|
}
|
|
strDebug+="\n";
|
|
::OutputDebugString(strDebug.str());
|
|
}
|
|
::OutputDebugString("};\n");
|
|
}
|
|
|
|
#if 0
|
|
void DivePlanner::dumpTable(void)
|
|
{
|
|
String strDebug;
|
|
|
|
strDebug.reserve(512);
|
|
for(int row=0;row<26;row++)
|
|
{
|
|
for(int col=0;col<26;col++)
|
|
{
|
|
::sprintf(strDebug,"smSurfaceIntervalTable[%d][%d]=SurfaceInterval(SurfaceTime(%d,%d),SurfaceTime(%d,%d));\n",
|
|
row,col,
|
|
(smSurfaceIntervalTable[row][col]).minTime().hours(),
|
|
(smSurfaceIntervalTable[row][col]).minTime().minutes(),
|
|
(smSurfaceIntervalTable[row][col]).maxTime().hours(),
|
|
(smSurfaceIntervalTable[row][col]).maxTime().minutes());
|
|
::OutputDebugString(strDebug);
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
|
|
// static SI smSurfaceIntervalTable[][26];
|
|
|
|
|
|
|
|
//DivePlanner::SI DivePlanner::smSurfaceIntervalTable[][26]=
|
|
|
|
|
|
|
|
|
|
#endif
|