dump-zap.c 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #include <stdio.h>
  2. #include <linux/dvb/frontend.h>
  3. #include "dump-zap.h"
  4. static const char *inv_name [] = {
  5. "INVERSION_OFF",
  6. "INVERSION_ON",
  7. "INVERSION_AUTO"
  8. };
  9. static const char *fec_name [] = {
  10. "FEC_NONE",
  11. "FEC_1_2",
  12. "FEC_2_3",
  13. "FEC_3_4",
  14. "FEC_4_5",
  15. "FEC_5_6",
  16. "FEC_6_7",
  17. "FEC_7_8",
  18. "FEC_8_9",
  19. "FEC_AUTO"
  20. };
  21. static const char *qam_name [] = {
  22. "QPSK",
  23. "QAM_16",
  24. "QAM_32",
  25. "QAM_64",
  26. "QAM_128",
  27. "QAM_256",
  28. "QAM_AUTO",
  29. "8VSB",
  30. "16VSB",
  31. };
  32. static const char *bw_name [] = {
  33. "BANDWIDTH_8_MHZ",
  34. "BANDWIDTH_7_MHZ",
  35. "BANDWIDTH_6_MHZ",
  36. "BANDWIDTH_AUTO"
  37. };
  38. static const char *mode_name [] = {
  39. "TRANSMISSION_MODE_2K",
  40. "TRANSMISSION_MODE_8K",
  41. "TRANSMISSION_MODE_AUTO"
  42. };
  43. static const char *guard_name [] = {
  44. "GUARD_INTERVAL_1_32",
  45. "GUARD_INTERVAL_1_16",
  46. "GUARD_INTERVAL_1_8",
  47. "GUARD_INTERVAL_1_4",
  48. "GUARD_INTERVAL_AUTO"
  49. };
  50. static const char *hierarchy_name [] = {
  51. "HIERARCHY_NONE",
  52. "HIERARCHY_1",
  53. "HIERARCHY_2",
  54. "HIERARCHY_4",
  55. "HIERARCHY_AUTO"
  56. };
  57. void zap_dump_dvb_parameters (FILE *f, fe_type_t type, struct dvb_frontend_parameters *p, char polarity, int sat_number)
  58. {
  59. switch (type) {
  60. case FE_QPSK:
  61. fprintf (f, "%i:", p->frequency / 1000); /* channels.conf wants MHz */
  62. fprintf (f, "%c:", polarity);
  63. fprintf (f, "%d:", sat_number);
  64. fprintf (f, "%i", p->u.qpsk.symbol_rate / 1000); /* channels.conf wants kBaud */
  65. /*fprintf (f, "%s", fec_name[p->u.qpsk.fec_inner]);*/
  66. break;
  67. case FE_QAM:
  68. fprintf (f, "%i:", p->frequency);
  69. fprintf (f, "%s:", inv_name[p->inversion]);
  70. fprintf (f, "%i:", p->u.qpsk.symbol_rate);
  71. fprintf (f, "%s:", fec_name[p->u.qpsk.fec_inner]);
  72. fprintf (f, "%s", qam_name[p->u.qam.modulation]);
  73. break;
  74. case FE_OFDM:
  75. fprintf (f, "%i:", p->frequency);
  76. fprintf (f, "%s:", inv_name[p->inversion]);
  77. fprintf (f, "%s:", bw_name[p->u.ofdm.bandwidth]);
  78. fprintf (f, "%s:", fec_name[p->u.ofdm.code_rate_HP]);
  79. fprintf (f, "%s:", fec_name[p->u.ofdm.code_rate_LP]);
  80. fprintf (f, "%s:", qam_name[p->u.ofdm.constellation]);
  81. fprintf (f, "%s:", mode_name[p->u.ofdm.transmission_mode]);
  82. fprintf (f, "%s:", guard_name[p->u.ofdm.guard_interval]);
  83. fprintf (f, "%s", hierarchy_name[p->u.ofdm.hierarchy_information]);
  84. break;
  85. case FE_ATSC:
  86. fprintf (f, "%i:", p->frequency);
  87. fprintf (f, "%s", qam_name[p->u.vsb.modulation]);
  88. break;
  89. default:
  90. ;
  91. };
  92. }
  93. void zap_dump_service_parameter_set (FILE *f,
  94. const char *service_name,
  95. fe_type_t type,
  96. struct dvb_frontend_parameters *p,
  97. char polarity,
  98. int sat_number,
  99. uint16_t video_pid,
  100. uint16_t *audio_pid,
  101. uint16_t service_id)
  102. {
  103. fprintf (f, "%s:", service_name);
  104. zap_dump_dvb_parameters (f, type, p, polarity, sat_number);
  105. fprintf (f, ":%i:%i:%i", video_pid, audio_pid[0], service_id);
  106. fprintf (f, "\n");
  107. }