Advertisement
Guest User

Untitled

a guest
May 19th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.29 KB | None | 0 0
  1. #include "application.hpp"
  2. #include "../can/can-decoder.hpp"
  3. #include "../can/can-encoder.hpp"
  4.  
  5. application_t::application_t()
  6. : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
  7. , message_set_{
  8. {std::make_shared<message_set_t>(message_set_t{0,"J1939",
  9. { // beginning message_definition_ vector
  10. {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,0,1,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,8,
  11. { // beginning signals vector
  12. {std::make_shared<signal_t> (signal_t{
  13. "EngMomentaryOverspeedEnable",// generic_name
  14. 32,// bit_position
  15. 2,// bit_size
  16. 1.00000f,// factor
  17. 0.00000,// offset
  18. 0,// min_value
  19. 0,// max_value
  20. frequency_clock_t(0.00000f),// frequency
  21. true,// send_same
  22. false,// force_send_changed
  23. {
  24. {0,"MomentaryEngOverspeedIsDisabled"},
  25. {1,"MomentaryEngOverspeedIsEnabled"},
  26. {2,"Reserved"},
  27. {3,"TakeNoAction"}
  28. },// states
  29. false,// writable
  30. nullptr,// decoder
  31. nullptr,// encoder
  32. false,// received
  33. "",// multiplex
  34. 0,// is_big_endian
  35. 0,// is_signed
  36. "",// unit
  37. "Command signal used to indicate that the engine speed may be boosted up to the maximum engine overspeed value to"// comment
  38. })},
  39. {std::make_shared<signal_t> (signal_t{
  40. "MomentaryEngMaxPowerEnable",// generic_name
  41. 36,// bit_position
  42. 2,// bit_size
  43. 1.00000f,// factor
  44. 0.00000,// offset
  45. 0,// min_value
  46. 0,// max_value
  47. frequency_clock_t(0.00000f),// frequency
  48. true,// send_same
  49. false,// force_send_changed
  50. {
  51. {2,"fault"},
  52. {1,"mmntarilyRqingMaxPowerAvailable"},
  53. {3,"notAvailable"},
  54. {0,"notRqingMaxPowerAvailable"}
  55. },// states
  56. false,// writable
  57. nullptr,// decoder
  58. nullptr,// encoder
  59. false,// received
  60. "",// multiplex
  61. 0,// is_big_endian
  62. 0,// is_signed
  63. "",// unit
  64. "Momentarily Requesting highest torque map from the engine control"// comment
  65. })},
  66. {std::make_shared<signal_t> (signal_t{
  67. "PercentClutchSlip",// generic_name
  68. 24,// bit_position
  69. 8,// bit_size
  70. 0.400000f,// factor
  71. 0.00000,// offset
  72. 0,// min_value
  73. 0,// max_value
  74. frequency_clock_t(0.00000f),// frequency
  75. true,// send_same
  76. false,// force_send_changed
  77. {
  78. },// states
  79. false,// writable
  80. nullptr,// decoder
  81. nullptr,// encoder
  82. false,// received
  83. "",// multiplex
  84. 0,// is_big_endian
  85. 0,// is_signed
  86. "%",// unit
  87. "Parameter which represents the ratio of input shaft speed to current engine speed (in percent)."// comment
  88. })},
  89. {std::make_shared<signal_t> (signal_t{
  90. "ProgressiveShiftDisable",// generic_name
  91. 34,// bit_position
  92. 2,// bit_size
  93. 1.00000f,// factor
  94. 0.00000,// offset
  95. 0,// min_value
  96. 0,// max_value
  97. frequency_clock_t(0.00000f),// frequency
  98. true,// send_same
  99. false,// force_send_changed
  100. {
  101. {1,"ProgressiveShiftIsDisabled"},
  102. {0,"ProgressiveShiftIsNotDisabled"},
  103. {2,"Reserved"},
  104. {3,"TakeNoAction"}
  105. },// states
  106. false,// writable
  107. nullptr,// decoder
  108. nullptr,// encoder
  109. false,// received
  110. "",// multiplex
  111. 0,// is_big_endian
  112. 0,// is_signed
  113. "",// unit
  114. "Command signal used to indicate that progressive shifting by the engine should be disallowed."// comment
  115. })},
  116. {std::make_shared<signal_t> (signal_t{
  117. "SrcAddrssOfCtrllngDvcFrTrnsCntrl",// generic_name
  118. 56,// bit_position
  119. 8,// bit_size
  120. 1.00000f,// factor
  121. 0.00000,// offset
  122. 0,// min_value
  123. 0,// max_value
  124. frequency_clock_t(0.00000f),// frequency
  125. true,// send_same
  126. false,// force_send_changed
  127. {
  128. },// states
  129. false,// writable
  130. nullptr,// decoder
  131. nullptr,// encoder
  132. false,// received
  133. "",// multiplex
  134. 0,// is_big_endian
  135. 0,// is_signed
  136. "",// unit
  137. "The source address of the SAE J1939 device currently controlling the transmission."// comment
  138. })},
  139. {std::make_shared<signal_t> (signal_t{
  140. "TransDrivelineEngaged",// generic_name
  141. 0,// bit_position
  142. 2,// bit_size
  143. 1.00000f,// factor
  144. 0.00000,// offset
  145. 0,// min_value
  146. 0,// max_value
  147. frequency_clock_t(0.00000f),// frequency
  148. true,// send_same
  149. false,// force_send_changed
  150. {
  151. {0,"DrivelineDisengaged"},
  152. {1,"DrivelineEngaged"},
  153. {2,"Error"},
  154. {3,"NotAvailable"}
  155. },// states
  156. false,// writable
  157. nullptr,// decoder
  158. nullptr,// encoder
  159. false,// received
  160. "",// multiplex
  161. 0,// is_big_endian
  162. 0,// is_signed
  163. "",// unit
  164. "Driveline engaged indicates the transmission controlled portion of the driveline is engaged sufficiently to allow a transfer"// comment
  165. })},
  166. {std::make_shared<signal_t> (signal_t{
  167. "TransInputShaftSpeed",// generic_name
  168. 40,// bit_position
  169. 16,// bit_size
  170. 0.125000f,// factor
  171. 0.00000,// offset
  172. 0,// min_value
  173. 0,// max_value
  174. frequency_clock_t(0.00000f),// frequency
  175. true,// send_same
  176. false,// force_send_changed
  177. {
  178. },// states
  179. false,// writable
  180. nullptr,// decoder
  181. nullptr,// encoder
  182. false,// received
  183. "",// multiplex
  184. 0,// is_big_endian
  185. 0,// is_signed
  186. "rpm",// unit
  187. "Rotational velocity of the primary shaft transferring power into the transmission."// comment
  188. })},
  189. {std::make_shared<signal_t> (signal_t{
  190. "TransOutputShaftSpeed",// generic_name
  191. 8,// bit_position
  192. 16,// bit_size
  193. 0.125000f,// factor
  194. 0.00000,// offset
  195. 0,// min_value
  196. 0,// max_value
  197. frequency_clock_t(0.00000f),// frequency
  198. true,// send_same
  199. false,// force_send_changed
  200. {
  201. },// states
  202. false,// writable
  203. nullptr,// decoder
  204. nullptr,// encoder
  205. false,// received
  206. "",// multiplex
  207. 0,// is_big_endian
  208. 0,// is_signed
  209. "rpm",// unit
  210. "Calculated speed of the transmission output shaft."// comment
  211. })},
  212. {std::make_shared<signal_t> (signal_t{
  213. "TransShiftInProcess",// generic_name
  214. 4,// bit_position
  215. 2,// bit_size
  216. 1.00000f,// factor
  217. 0.00000,// offset
  218. 0,// min_value
  219. 0,// max_value
  220. frequency_clock_t(0.00000f),// frequency
  221. true,// send_same
  222. false,// force_send_changed
  223. {
  224. {2,"Error"},
  225. {3,"NotAvailable"},
  226. {1,"ShiftInProcess"},
  227. {0,"ShiftIsNotInProcess"}
  228. },// states
  229. false,// writable
  230. nullptr,// decoder
  231. nullptr,// encoder
  232. false,// received
  233. "",// multiplex
  234. 0,// is_big_endian
  235. 0,// is_signed
  236. "",// unit
  237. "Indicates that the transmission is in process of shifting from the current gear to the selected gear."// comment
  238. })},
  239. {std::make_shared<signal_t> (signal_t{
  240. "TrnsTrqCnvrtrLckpTrnstnInPrcess",// generic_name
  241. 6,// bit_position
  242. 2,// bit_size
  243. 1.00000f,// factor
  244. 0.00000,// offset
  245. 0,// min_value
  246. 0,// max_value
  247. frequency_clock_t(0.00000f),// frequency
  248. true,// send_same
  249. false,// force_send_changed
  250. {
  251. {2,"Error"},
  252. {3,"NotAvailable"},
  253. {1,"TransitionIsInProcess"},
  254. {0,"TransitionIsNotInProcess"}
  255. },// states
  256. false,// writable
  257. nullptr,// decoder
  258. nullptr,// encoder
  259. false,// received
  260. "",// multiplex
  261. 0,// is_big_endian
  262. 0,// is_signed
  263. "",// unit
  264. "State signal indicating whether or not the transmission torque converter lock up clutch is transitioning between being"// comment
  265. })},
  266. {std::make_shared<signal_t> (signal_t{
  267. "TrnsTrqueConverterLockupEngaged",// generic_name
  268. 2,// bit_position
  269. 2,// bit_size
  270. 1.00000f,// factor
  271. 0.00000,// offset
  272. 0,// min_value
  273. 0,// max_value
  274. frequency_clock_t(0.00000f),// frequency
  275. true,// send_same
  276. false,// force_send_changed
  277. {
  278. {2,"Error"},
  279. {3,"NotAvailable"},
  280. {0,"TorqueConverterLockupDisengaged"},
  281. {1,"TorqueConverterLockupEngaged"}
  282. },// states
  283. false,// writable
  284. nullptr,// decoder
  285. nullptr,// encoder
  286. false,// received
  287. "",// multiplex
  288. 0,// is_big_endian
  289. 0,// is_signed
  290. "",// unit
  291. "State signal which indicates whether the torque converter lockup is engaged."// comment
  292. })}
  293. } // end signals vector
  294. })}, // end message_definition entry
  295.  
  296. {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,0,1,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,8,
  297. { // beginning signals vector
  298. {std::make_shared<signal_t> (signal_t{
  299. "LateralAcceleration",// generic_name
  300. 40,// bit_position
  301. 16,// bit_size
  302. 0.000488281f,// factor
  303. -15.6870,// offset
  304. 0,// min_value
  305. 0,// max_value
  306. frequency_clock_t(0.00000f),// frequency
  307. true,// send_same
  308. false,// force_send_changed
  309. {
  310. },// states
  311. false,// writable
  312. nullptr,// decoder
  313. nullptr,// encoder
  314. false,// received
  315. "",// multiplex
  316. 0,// is_big_endian
  317. 0,// is_signed
  318. "m/s/s",// unit
  319. "Indicates a lateral acceleration of the vehicle."// comment
  320. })},
  321. {std::make_shared<signal_t> (signal_t{
  322. "LongitudinalAcceleration",// generic_name
  323. 56,// bit_position
  324. 8,// bit_size
  325. 0.100000f,// factor
  326. -12.5000,// offset
  327. 0,// min_value
  328. 0,// max_value
  329. frequency_clock_t(0.00000f),// frequency
  330. true,// send_same
  331. false,// force_send_changed
  332. {
  333. },// states
  334. false,// writable
  335. nullptr,// decoder
  336. nullptr,// encoder
  337. false,// received
  338. "",// multiplex
  339. 0,// is_big_endian
  340. 0,// is_signed
  341. "m/s/s",// unit
  342. "Indicates the longitudinal acceleration of the vehicle."// comment
  343. })},
  344. {std::make_shared<signal_t> (signal_t{
  345. "SteerWheelAngle",// generic_name
  346. 0,// bit_position
  347. 16,// bit_size
  348. 0.000976562f,// factor
  349. -31.3740,// offset
  350. 0,// min_value
  351. 0,// max_value
  352. frequency_clock_t(0.00000f),// frequency
  353. true,// send_same
  354. false,// force_send_changed
  355. {
  356. },// states
  357. false,// writable
  358. nullptr,// decoder
  359. nullptr,// encoder
  360. false,// received
  361. "",// multiplex
  362. 0,// is_big_endian
  363. 0,// is_signed
  364. "rad",// unit
  365. "The main operator`s steering wheel angle (on the steering column, not the actual wheel angle)."// comment
  366. })},
  367. {std::make_shared<signal_t> (signal_t{
  368. "SteerWheelAngleSensorType",// generic_name
  369. 22,// bit_position
  370. 2,// bit_size
  371. 1.00000f,// factor
  372. 0.00000,// offset
  373. 0,// min_value
  374. 0,// max_value
  375. frequency_clock_t(0.00000f),// frequency
  376. true,// send_same
  377. false,// force_send_changed
  378. {
  379. {1,"AbsMeasuringPrinciple"},
  380. {3,"NotAvailable"},
  381. {0,"RelativeMeasuringPrinciple"},
  382. {2,"Reserved"}
  383. },// states
  384. false,// writable
  385. nullptr,// decoder
  386. nullptr,// encoder
  387. false,// received
  388. "",// multiplex
  389. 0,// is_big_endian
  390. 0,// is_signed
  391. "",// unit
  392. "Indicates whether the steering wheel angle sensor is capable of absolute measuring of the number of steering wheel"// comment
  393. })},
  394. {std::make_shared<signal_t> (signal_t{
  395. "SteerWheelTurnCounter",// generic_name
  396. 16,// bit_position
  397. 6,// bit_size
  398. 1.00000f,// factor
  399. -32.0000,// offset
  400. 0,// min_value
  401. 0,// max_value
  402. frequency_clock_t(0.00000f),// frequency
  403. true,// send_same
  404. false,// force_send_changed
  405. {
  406. },// states
  407. false,// writable
  408. nullptr,// decoder
  409. nullptr,// encoder
  410. false,// received
  411. "",// multiplex
  412. 0,// is_big_endian
  413. 0,// is_signed
  414. "turns",// unit
  415. "Indicates number of steering wheel turns, absolute position or relative position at ignition on."// comment
  416. })},
  417. {std::make_shared<signal_t> (signal_t{
  418. "YawRate",// generic_name
  419. 24,// bit_position
  420. 16,// bit_size
  421. 0.000122070f,// factor
  422. -3.92000,// offset
  423. 0,// min_value
  424. 0,// max_value
  425. frequency_clock_t(0.00000f),// frequency
  426. true,// send_same
  427. false,// force_send_changed
  428. {
  429. },// states
  430. false,// writable
  431. nullptr,// decoder
  432. nullptr,// encoder
  433. false,// received
  434. "",// multiplex
  435. 0,// is_big_endian
  436. 0,// is_signed
  437. "rad/s",// unit
  438. "Indicates the rotation about the vertical axis."// comment
  439. })}
  440. } // end signals vector
  441. })}, // end message_definition entry
  442.  
  443. {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,0,1,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,8,
  444. { // beginning signals vector
  445. {std::make_shared<signal_t> (signal_t{
  446. "EngTotalHoursOfOperation",// generic_name
  447. 0,// bit_position
  448. 32,// bit_size
  449. 0.0500000f,// factor
  450. 0.00000,// offset
  451. 0,// min_value
  452. 0,// max_value
  453. frequency_clock_t(0.00000f),// frequency
  454. true,// send_same
  455. false,// force_send_changed
  456. {
  457. },// states
  458. false,// writable
  459. nullptr,// decoder
  460. nullptr,// encoder
  461. false,// received
  462. "",// multiplex
  463. 0,// is_big_endian
  464. 0,// is_signed
  465. "hr",// unit
  466. "Accumulated time of operation of engine."// comment
  467. })},
  468. {std::make_shared<signal_t> (signal_t{
  469. "EngTotalRevolutions",// generic_name
  470. 32,// bit_position
  471. 32,// bit_size
  472. 1000.00f,// factor
  473. 0.00000,// offset
  474. 0,// min_value
  475. 0,// max_value
  476. frequency_clock_t(0.00000f),// frequency
  477. true,// send_same
  478. false,// force_send_changed
  479. {
  480. },// states
  481. false,// writable
  482. nullptr,// decoder
  483. nullptr,// encoder
  484. false,// received
  485. "",// multiplex
  486. 0,// is_big_endian
  487. 0,// is_signed
  488. "r",// unit
  489. "Accumulated number of revolutions of engine crankshaft during its operation."// comment
  490. })}
  491. } // end signals vector
  492. })}, // end message_definition entry
  493.  
  494. {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,0,1,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,8,
  495. { // beginning signals vector
  496. {std::make_shared<signal_t> (signal_t{
  497. "EngCoolantTemp",// generic_name
  498. 0,// bit_position
  499. 8,// bit_size
  500. 0.0312500f,// factor
  501. -273.000,// offset
  502. 0,// min_value
  503. 0,// max_value
  504. frequency_clock_t(0.00000f),// frequency
  505. true,// send_same
  506. false,// force_send_changed
  507. {
  508. },// states
  509. false,// writable
  510. nullptr,// decoder
  511. nullptr,// encoder
  512. false,// received
  513. "",// multiplex
  514. 0,// is_big_endian
  515. 0,// is_signed
  516. "deg C",// unit
  517. "Temperature of liquid found in engine cooling system."// comment
  518. })},
  519. {std::make_shared<signal_t> (signal_t{
  520. "EngFuelTemp1",// generic_name
  521. 8,// bit_position
  522. 8,// bit_size
  523. 1.00000f,// factor
  524. -40.0000,// offset
  525. 0,// min_value
  526. 0,// max_value
  527. frequency_clock_t(0.00000f),// frequency
  528. true,// send_same
  529. false,// force_send_changed
  530. {
  531. },// states
  532. false,// writable
  533. nullptr,// decoder
  534. nullptr,// encoder
  535. false,// received
  536. "",// multiplex
  537. 0,// is_big_endian
  538. 0,// is_signed
  539. "deg C",// unit
  540. "Temperature of fuel (or gas) passing through the first fuel control system."// comment
  541. })},
  542. {std::make_shared<signal_t> (signal_t{
  543. "EngIntercoolerTemp",// generic_name
  544. 48,// bit_position
  545. 8,// bit_size
  546. 1.00000f,// factor
  547. -40.0000,// offset
  548. 0,// min_value
  549. 0,// max_value
  550. frequency_clock_t(0.00000f),// frequency
  551. true,// send_same
  552. false,// force_send_changed
  553. {
  554. },// states
  555. false,// writable
  556. nullptr,// decoder
  557. nullptr,// encoder
  558. false,// received
  559. "",// multiplex
  560. 0,// is_big_endian
  561. 0,// is_signed
  562. "deg C",// unit
  563. "Temperature of liquid found in the intercooler located after the turbocharger."// comment
  564. })},
  565. {std::make_shared<signal_t> (signal_t{
  566. "EngIntercoolerThermostatOpening",// generic_name
  567. 56,// bit_position
  568. 8,// bit_size
  569. 0.400000f,// factor
  570. 0.00000,// offset
  571. 0,// min_value
  572. 0,// max_value
  573. frequency_clock_t(0.00000f),// frequency
  574. true,// send_same
  575. false,// force_send_changed
  576. {
  577. },// states
  578. false,// writable
  579. nullptr,// decoder
  580. nullptr,// encoder
  581. false,// received
  582. "",// multiplex
  583. 0,// is_big_endian
  584. 0,// is_signed
  585. "%",// unit
  586. "The current position of the thermostat used to regulate the temperature of the engine intercooler."// comment
  587. })},
  588. {std::make_shared<signal_t> (signal_t{
  589. "EngOilTemp1",// generic_name
  590. 16,// bit_position
  591. 16,// bit_size
  592. 0.0312500f,// factor
  593. -273.000,// offset
  594. 0,// min_value
  595. 0,// max_value
  596. frequency_clock_t(0.00000f),// frequency
  597. true,// send_same
  598. false,// force_send_changed
  599. {
  600. },// states
  601. false,// writable
  602. nullptr,// decoder
  603. nullptr,// encoder
  604. false,// received
  605. "",// multiplex
  606. 0,// is_big_endian
  607. 0,// is_signed
  608. "deg C",// unit
  609. "Temperature of the engine lubricant."// comment
  610. })},
  611. {std::make_shared<signal_t> (signal_t{
  612. "EngTurboOilTemp",// generic_name
  613. 32,// bit_position
  614. 16,// bit_size
  615. 0.0312500f,// factor
  616. -273.000,// offset
  617. 0,// min_value
  618. 0,// max_value
  619. frequency_clock_t(0.00000f),// frequency
  620. true,// send_same
  621. false,// force_send_changed
  622. {
  623. },// states
  624. false,// writable
  625. nullptr,// decoder
  626. nullptr,// encoder
  627. false,// received
  628. "",// multiplex
  629. 0,// is_big_endian
  630. 0,// is_signed
  631. "deg C",// unit
  632. "Temperature of the turbocharger lubricant."// comment
  633. })}
  634. } // end signals vector
  635. })} // end message_definition entry
  636.  
  637. }, // end message_definition vector
  638. { // beginning diagnostic_messages_ vector
  639.  
  640. } // end diagnostic_messages_ vector
  641. })} // end message_set entry
  642. } // end message_set vector
  643. {
  644. for(std::shared_ptr<message_set_t> cms: message_set_)
  645. {
  646. std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
  647. for(std::shared_ptr<message_definition_t> cmd : messages_definition)
  648. {
  649. cmd->set_parent(cms);
  650. std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
  651. for(std::shared_ptr<signal_t> sig: signals)
  652. {
  653. sig->set_parent(cmd);
  654. }
  655. }
  656.  
  657. std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
  658. for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
  659. {
  660. dm->set_parent(cms);
  661. }
  662. }
  663. }
  664.  
  665. const std::string application_t::get_diagnostic_bus() const
  666. {
  667. return "";
  668. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement