home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / base / root.15 / etc / dcu.d / menus / drivers / drivers~
Text File  |  1998-08-19  |  13KB  |  524 lines

  1. #ident    "@(#)dcu:menus/drivers    1.49.1.1"
  2.  
  3. . ${DCUSCRIPTS}/dculib.sh
  4.  
  5. function xpnddriver
  6. {
  7. # xpnddriver()
  8. # Called to display additional information about driver
  9. # when the F6=Info hotkey is invoked from within any of the
  10. # Software Device Drivers category screens
  11. # Calling/Exit State: void.
  12.  
  13. [ "$DCUDEBUG" -gt 3 ] && {
  14. print -u2 "$0 called"
  15. set -x
  16. }
  17. typeset -R25 imsg
  18. typeset -L51 msg
  19. integer i=0
  20. typeset name isc unit ipl itype irq ports porte addrs addre dma cpu
  21.  
  22. place_window $DCU_MAX_WIDTH $DCU_MAX_HEIGHT-$FOOTER_HEIGHT-1 -below 0 -title "$CONFIG_INFO" 
  23.  
  24. integer mc
  25. eval mc=\$"${MODNAME[$CURDRV]}"
  26. if (( mc == 0 ))
  27. then
  28.     wprintf $CURWIN "%s\n $NOSELECTMSG"
  29. else
  30.     wprintf $CURWIN "%s\n $SELECTMSG"
  31. fi
  32.  
  33. name="${DRVBOARDNAMEFULL[$CURDRV]}"
  34. imsg="$BoardName"
  35. msg=" : $name"
  36. wprintf $CURWIN "%s %s\n $imsg $msg"
  37.  
  38. #name="${MODNAME[$CURDRV]}"
  39. #imsg="$DriverName"
  40. #msg=" : $name"
  41. #wprintf $CURWIN "%s %s\n $imsg $msg"
  42. #
  43. name="${DRVMODCHOICES[$CURDRV]}"
  44. imsg="$DriverName"
  45. msg=" : $name"
  46. wprintf $CURWIN "%s %s\n $imsg $msg"
  47.  
  48. isc="${DRVISCCHOICES[$CURDRV]}"
  49. imsg="$boardisc"
  50. msg=" : $isc"
  51. wprintf $CURWIN "%s %s\n $imsg $msg"
  52.  
  53. unit="${DRVUNITCHOICES[$CURDRV]}"
  54. imsg="$boardunit"
  55. msg=" : $unit"
  56. wprintf $CURWIN "%s %s\n $imsg $msg"
  57.  
  58. ipl="${DRVIPLCHOICES[$CURDRV]}"
  59. imsg="$boardipl"
  60. msg=" : $ipl"
  61. wprintf $CURWIN "%s %s\n $imsg $msg"
  62.  
  63. itype="${DRVITYPECHOICES[$CURDRV]}"
  64. imsg="$boarditype"
  65. msg=" : $itype"
  66. wprintf $CURWIN "%s %s\n $imsg $msg"
  67.  
  68. irq="${DRVIRQCHOICES[$CURDRV]}"
  69. imsg="$boardirq"
  70. msg=" : $irq"
  71. wprintf $CURWIN "%s %s\n $imsg $msg"
  72.  
  73. ports="${DRVPORTSCHOICES[$CURDRV]}"
  74. imsg="$boardios"
  75. msg=" : $ports"
  76. wprintf $CURWIN "%s %s\n $imsg $msg"
  77.  
  78. porte="${DRVPORTECHOICES[$CURDRV]}"
  79. imsg="$boardioe"
  80. msg=" : $porte"
  81. wprintf $CURWIN "%s %s\n $imsg $msg"
  82.  
  83. addrs="${DRVMEMSCHOICES[$CURDRV]}"
  84. imsg="$boardmems"
  85. msg=" : $addrs"
  86. wprintf $CURWIN "%s %s\n $imsg $msg"
  87.  
  88. addre="${DRVMEMECHOICES[$CURDRV]}"
  89. imsg="$boardmeme"
  90. msg=" : $addre"
  91. wprintf $CURWIN "%s %s\n $imsg $msg"
  92.  
  93. dma="${DRVDMACHOICES[$CURDRV]}"
  94. imsg="$boarddma"
  95. msg=" : $dma"
  96. wprintf $CURWIN "%s %s\n $imsg $msg"
  97.  
  98. cpu="${DRVCPUCHOICES[$CURDRV]}"
  99. imsg="$boardcpu"
  100. msg=" : $cpu"
  101. wprintf $CURWIN "%s %s\n $imsg $msg"
  102.  
  103. typeset oldfooter="$CURFOOT"
  104. footer "$ESCXNDFOOTER"
  105. integer drvxwin="$CURWIN"
  106. call getkey
  107. wclose $drvx_win
  108. footer "$oldfooter"
  109. }
  110.  
  111. function driversdone
  112. {
  113. # driversdone()
  114. # Exit callback function for the drivers function that is called
  115. # to display the category menu again.
  116. # Calling/Exit State: 0.
  117.  
  118. [ "$DCUDEBUG" -gt 3 ] && {
  119. print -u2 "$0 called"
  120. set -x
  121. }
  122. typeset i
  123. #destroy_check $DRVCID
  124. category
  125. return 0
  126. }
  127.  
  128. function drivers
  129. {
  130. # drivers()
  131. # Called when the Software Device Driver Selection finds entries
  132. # to display the corresponding Software Device Drivers for that category.
  133. # Calling/Exit State: void.
  134.  
  135. [ "$DCUDEBUG" -gt 3 ] && {
  136. print -u2 "$0 called"
  137. set -x
  138. }
  139. typeset mn tmp prev_tmp i selected
  140. typeset -L8 drvname
  141. typeset -L8 prev_drvname=""
  142. typeset -L60 board
  143. typeset category
  144. integer inst chklines chkrows=20 chkitems=0 
  145.  
  146. footer ""
  147. category="$*"
  148. open_check -fg $COMBO2_FG -bg $COMBO2_BG -exit driversdone
  149. DRVCID=$CID
  150.  
  151. add_check "$CATMAIN_HEADER" -gray
  152. let chkitems+=1
  153. add_check "$CATMAIN_HEADER2" -gray
  154. let chkitems+=1
  155.  
  156. for i in $ALLDRIVERS
  157. do
  158.     if [ ! "$category" = "${alldrivers}" -a  ! "$category" = "${DRVCATEGORY[$i]}" ]
  159.     then
  160.         continue
  161.     fi
  162.     eval inst=\$"${MODNAME[i]}"
  163.     if (( $inst ))
  164.     then
  165.         selected=-is_selected
  166.     else
  167.         selected=
  168.         inst=1
  169.     fi
  170.     drvname="${MODNAME[$i]}"
  171.     board="${DRVBOARDNAMEFULL[$i]}"
  172.     mn="${MODNAME[i]}"
  173.     if [ "${drvname}" = "${prev_drvname}" ]
  174.     then
  175.         tmp="         "$board""
  176.         add_check -help 'helpwin dcu.drivsum' -entry "CURDRV=$i" -on "$mn=$inst" -off "$mn=" $selected "$tmp" -gray
  177.     else
  178.         tmp=""$drvname" "$board""
  179.         add_check -help 'helpwin dcu.drivsum' -entry "CURDRV=$i" -on "$mn=$inst" -off "$mn=" $selected "$tmp"
  180.     fi
  181.     let chkitems+=1
  182.     prev_drvname="${drvname}"
  183.  
  184. done
  185.  
  186. if (( chkitems == 2 ))
  187. then
  188.     display -w "$NODRVCATS" -bg $MAGENTA -fg $WHITE
  189.     footer "$GENERIC_CONTINUE_FOOTER"
  190.     call proc_loop
  191.     driversdone
  192.     return 0
  193. fi
  194. let chklines=chkitems
  195. check_runparms $DRVCID $chklines
  196. typeset title="$DRVSUMMARY"
  197. (( $CHECK_WIN_HEIGHT < $chkrows )) && {
  198. let chkrows=$CHECK_WIN_HEIGHT+1
  199. chklines=$CHECK_WIN_HEIGHT
  200. }
  201. place_window $DCU_MAX_WIDTH $DCU_MAX_HEIGHT-$FOOTER_HEIGHT -left 0 -above 0 -fg $COMBO2_FG -bg $COMBO2_BG -title "$title" -current 'msg; footer "$DRVFOOTER"'
  202. typeset wid=$CURWIN
  203. set_hotkey 5 configboard
  204. set_hotkey 6 xpnddriver 
  205. run_check $DRVCID 0 $chklines
  206. }
  207.  
  208. function configboard
  209. {
  210. # configboard()
  211. # Called when the F5=New key is selected
  212. # to generate the display for the New Hardware Configuration.
  213. # Calling/Exit State: void.
  214.  
  215. [ "$DCUDEBUG" -gt 3 ] && {
  216. print -u2 "$0 called"
  217. set -x
  218. }
  219. integer i mc
  220. eval mc=\$"${MODNAME[$CURDRV]}"
  221. if (( mc == 0 ))
  222. then
  223.     msgnoerr "$NOSELECT"
  224.     return 0
  225. fi
  226. # if we're adding an additional network board, tell user to run netcfg
  227. # instead.  dcu doesn't add all the necessary additional parameters
  228. # to the resmgr(ndcfg does) so this will only lead to problems later on.
  229. if [ -d ${ROOT}/etc/conf/bcfg.d/${MODNAME[$CURDRV]} ]
  230. then
  231.     msgnoerr "use /usr/sbin/netcfg to add an additional network board"
  232.     return 0
  233. fi
  234. typeset title="$BRDCONFIG"
  235.  
  236. set -A OLDLINETOBD - ${LINETOBD[*]}
  237. set -A OLDBOARDFLD - ${BOARDFLD[*]}
  238. set -A driverval - ${MODNAME[$CURDRV]}
  239. if [ "${MODNAME[CURDRV]}" = "${MODNAME[CURDRV+1]}" ]
  240. then
  241.     set -A boardval - ${MODNAME[$CURDRV]}
  242. else
  243.     set -A boardval - "${DRVBOARDNAMEFULL[$CURDRV]}"
  244. fi
  245. set -A iplval - ${DRVIPLCHOICES[$CURDRV]}
  246. set -A itypeval - ${DRVITYPECHOICES[$CURDRV]}
  247. set -A irqval - ${DRVIRQCHOICES[$CURDRV]}
  248. set -A portsval - ${DRVPORTSCHOICES[$CURDRV]}
  249. set -A porteval - ${DRVPORTECHOICES[$CURDRV]}
  250. set -A memsval - ${DRVMEMSCHOICES[$CURDRV]}
  251. set -A memeval - ${DRVMEMECHOICES[$CURDRV]}
  252. set -A dmaval - ${DRVDMACHOICES[$CURDRV]}
  253. set -A cpuval - ${DRVCPUCHOICES[$CURDRV]}
  254.  
  255. saveboardflg=1
  256.  
  257. if [ -z "$CNFGBDINDX" ]
  258. then
  259.     popfree 
  260.     CNFGBDINDX=$?
  261.     open_form -exit "BDLINE=1; confboarddone"
  262.     CNFGBDFID=$FID
  263.     let CNFGBOARDFLD=FIELDCNT
  264.  
  265.     BDMODNAME[$CNFGBDINDX]="$driverval"
  266.     BDNAME[$CNFGBDINDX]="$boardval"
  267.     BDIPL[$CNFGBDINDX]="$iplval"
  268.     BDITYPE[$CNFGBDINDX]="1"        # mine don't share
  269.     BDIRQ[$CNFGBDINDX]="$irqval"
  270.     BDPORTSTART[$CNFGBDINDX]="$portsval"
  271.     BDPORTEND[$CNFGBDINDX]="$porteval"
  272.     BDADDRSTART[$CNFGBDINDX]="$memsval"
  273.     BDADDREND[$CNFGBDINDX]="$memeval"
  274.     BDDMA[$CNFGBDINDX]="$dmaval"
  275.     BDCPU[$CNFGBDINDX]="$cpuval"
  276.  
  277.     add_field BDMODNAME[$CNFGBDINDX] \
  278.         -bg $COMBO2_BG -fg $COMBO2_FG -gray \
  279.         -px $((26-${#boarddriver})) -p "$boarddriver" -ilen 8
  280.  
  281.     add_field BDNAME[$CNFGBDINDX] \
  282.         -bg $COMBO2_BG -fg $COMBO2_FG -gray \
  283.         -px $((26-${#boardname})) -p "$boardname" -ilen 50 
  284.  
  285.     add_field BDUNIT[$CNFGBDINDX] \
  286.         -px $((26-${#boardunit})) -p "$boardunit" -ilen 11 \
  287.         -choice "choose_unit $CNFGBDINDX" \
  288.         -entry "msgnoerr;BDLINE=1" \
  289.         -help "helpwin dcu.addboard" \
  290.         -exit 'check_unit $CNFGBDINDX'
  291.  
  292.     add_field BDIPL[$CNFGBDINDX] \
  293.         -px $((26-${#boardipl})) -p "$boardipl" -ilen 1 \
  294.         -choice "choose_ipl $CNFGBDINDX" \
  295.         -entry "msgnoerr;BDLINE=1" \
  296.         -help "helpwin dcu.addboard" \
  297.         -exit 'check_ipl $CNFGBDINDX'
  298.  
  299.     add_field BDITYPE[$CNFGBDINDX] \
  300.         -px $((26-${#boarditype})) -p "$boarditype" -ilen 1 \
  301.         -choice "choose_itype $CNFGBDINDX" \
  302.         -entry "msgnoerr;BDLINE=1" \
  303.         -help "helpwin dcu.addboard" \
  304.         -exit 'check_itype $CNFGBDINDX'
  305.  
  306.     add_field BDIRQ[$CNFGBDINDX] \
  307.         -px $((26-${#boardirq})) -p "$boardirq" -ilen 2 \
  308.         -choice "choose_irq $CNFGBDINDX" \
  309.         -entry "msgnoerr;BDLINE=1" \
  310.         -help "helpwin dcu.addboard"  \
  311.         -exit 'check_irq $CNFGBDINDX'
  312.  
  313.     add_field BDPORTSTART[$CNFGBDINDX] \
  314.         -px $((26-${#boardios})) -p "$boardios" -ilen 8 \
  315.         -choice "choose_ports $CNFGBDINDX" \
  316.         -entry "msgnoerr;BDLINE=1" \
  317.         -help "helpwin dcu.addboard" \
  318.         -exit 'check_ports $CNFGBDINDX'
  319.  
  320.     add_field BDPORTEND[$CNFGBDINDX] \
  321.         -px $((26-${#boardioe})) -p "$boardioe" -ilen 8 \
  322.         -choice "choose_porte $CNFGBDINDX" \
  323.         -entry "msgnoerr;BDLINE=1" \
  324.         -help 'helpwin dcu.addboard' \
  325.         -exit 'check_porte $CNFGBDINDX'
  326.  
  327.     add_field BDADDRSTART[$CNFGBDINDX] \
  328.         -px $((26-${#boardmems})) -p "$boardmems" -ilen 8 \
  329.         -choice "choose_addrs $CNFGBDINDX" \
  330.         -entry "msgnoerr;BDLINE=1" \
  331.         -help 'helpwin dcu.addboard' \
  332.         -exit 'check_addrs $CNFGBDINDX'
  333.  
  334.     add_field BDADDREND[$CNFGBDINDX] \
  335.         -px $((26-${#boardmeme})) -p "$boardmeme" -ilen 8 \
  336.         -choice "choose_addre $CNFGBDINDX" \
  337.         -entry "msgnoerr;BDLINE=1" \
  338.         -help 'helpwin dcu.addboard' \
  339.         -exit 'check_addre $CNFGBDINDX'
  340.  
  341.     add_field BDDMA[$CNFGBDINDX] \
  342.         -px $((26-${#boarddma})) -p "$boarddma" -ilen 2 \
  343.         -choice "choose_dma $CNFGBDINDX" \
  344.         -entry "msgnoerr;BDLINE=1" \
  345.         -help "helpwin dcu.addboard" \
  346.         -exit 'check_dma $CNFGBDINDX'
  347.  
  348.     add_field BDCPU[$CNFGBDINDX] \
  349.         -px $((26-${#boardcpu})) -p "$boardcpu" -ilen 1 \
  350.         -choice "choose_cpu $CNFGBDINDX" \
  351.         -entry "msgnoerr;BDLINE=1" \
  352.         -help "helpwin dcu.addboard" \
  353.         -exit 'check_cpu $CNFGBDINDX'
  354.     
  355.     place_window $DCU_MAX_WIDTH $DCU_MAX_HEIGHT-$FOOTER_HEIGHT -fg $COMBO2_FG -bg $COMBO2_BG -title "$title" -current 'msgnoerr; footer "$CONFFOOTER"'
  356.     typeset wid=$CURWIN
  357.  
  358. else
  359.  
  360.     place_window $DCU_MAX_WIDTH $DCU_MAX_HEIGHT-$FOOTER_HEIGHT -fg $COMBO2_FG -bg $COMBO2_BG -title "$title" -current 'msgnoerr; footer "$CONFFOOTER"'
  361.     typeset wid=$CURWIN
  362.  
  363.     set -A driverval ${MODNAME[$CURDRV]}
  364.     if [ "${MODNAME[CURDRV]}" = "${MODNAME[CURDRV+1]}" ]
  365.     then
  366.         set -A boardval - ${MODNAME[$CURDRV]}
  367.     else
  368.         set -A boardval - "${DRVBOARDNAMEFULL[$CURDRV]}"
  369.     fi
  370.  
  371.     integer drvname=$CNFGBOARDFLD
  372.     integer bdname=$CNFGBOARDFLD+1
  373.     integer unit=$CNFGBOARDFLD+2
  374.     integer ipl=$CNFGBOARDFLD+3
  375.     integer itype=$CNFGBOARDFLD+4
  376.     integer irq=$CNFGBOARDFLD+5
  377.     integer portstart=$CNFGBOARDFLD+6 portend=$CNFGBOARDFLD+7
  378.     integer addrstart=$CNFGBOARDFLD+8 addrend=$CNFGBOARDFLD+9
  379.     integer dma=$CNFGBOARDFLD+10
  380.     integer cpu=$CNFGBOARDFLD+11
  381.  
  382.     fld_change $CNFGBDFID $drvname "$driverval"
  383.     fld_change $CNFGBDFID $bdname "$boardval"
  384.     fld_change $CNFGBDFID $unit "$unitval"
  385.     fld_change $CNFGBDFID $ipl "$iplval"
  386.     fld_change $CNFGBDFID $itype "$itypeval"
  387.     fld_change $CNFGBDFID $irq "$irqval"
  388.     fld_change $CNFGBDFID $portstart "$portsval"
  389.     fld_change $CNFGBDFID $portend "$porteval"
  390.     fld_change $CNFGBDFID $addrstart "$memsval" 
  391.     fld_change $CNFGBDFID $addrend "$memeval" 
  392.     fld_change $CNFGBDFID $dma "$dmaval" 
  393.     fld_change $CNFGBDFID $cpu "$cpuval" 
  394. fi
  395. let BOARDFLD[1]=$CNFGBOARDFLD
  396. LINETOBD[1]=$CNFGBDINDX
  397. BDMODINDX[$CNFGBDINDX]=$CURDRV
  398. BDTYPE[$CNFGBDINDX]=$unused
  399. BDBUSTYPE[$CNFGBDINDX]=$unknown
  400. BDCNFG[$CNFGBDINDX]="$Y"
  401. BDKEY[$CNFGBDINDX]=""
  402. set_hotkey 4 verifydriver
  403. set_hotkey 6 xpnddriver 
  404. set_hotkey 8 cancelreturn 
  405. BOARDXPND="$CONFFOOTER"
  406. run_form $CNFGBDFID
  407. }
  408.  
  409.  
  410. function cancelreturn
  411. {
  412. # cancelreturn()
  413. # Called when the F8=Cancel&Return key is selected from
  414. # a New Hardware Device Configuration screen to terminate addition
  415. # of new entry.
  416. # Calling/Exit State: void.
  417.  
  418. [ "$DCUDEBUG" -gt 3 ] && {
  419. print -u2 "$0 called"
  420. set -x
  421. }
  422.  
  423.     saveboardflg=0
  424.     # manually execute a KEY_DONE (code 4119)
  425.     call form_input $CNFGBDFID 4119
  426. }
  427.  
  428.  
  429. function confboarddone
  430. {
  431. # confboarddone()
  432. # Exit callback function for the configboard function that is called
  433. # when the F5=New hotkey is selected to configure a new entry.
  434. # Calling/Exit State: 0 for success and 1 for failure.
  435.  
  436. [ "$DCUDEBUG" -gt 3 ] && {
  437. print -u2 "$0 called"
  438. set -x
  439. }
  440. # May remove if winxksh behaviour changed to detect the failure
  441. if [ -n "$IRQCHKD" ] \
  442. || [ -n "$IOSCHKD" ] \
  443. || [ -n "$IOECHKD" ] \
  444. || [ -n "$MEMSCHKD" ] \
  445. || [ -n "$MEMECHKD" ] \
  446. || [ -n "$DMACHKD" ]
  447. then
  448.     return 1
  449. fi
  450. if (( saveboardflg == 1 ))
  451. then
  452.     saveboard
  453. fi
  454. BDTYPE[$CNFGBDINDX]=$unused
  455. set -A LINETOBD 0 ${OLDLINETOBD[*]}
  456. set -A BOARDFLD 0 ${OLDBOARDFLD[*]}
  457. BDFID=
  458. return 0
  459. }
  460.  
  461. function saveboard
  462. {
  463. # saveboard()
  464. # Called when a New Software Device Driver entry is to be applied.
  465. # It only updates the board array indexes and not the resmgr database.
  466. # Calling/Exit State: void.
  467.  
  468. [ "$DCUDEBUG" -gt 3 ] && {
  469. print -u2 "$0 called"
  470. set -x
  471. }
  472. integer x bd=LINETOBD[$BDLINE]
  473. if [ ! "${BDTYPE[$bd]}" = $changed ]
  474. then
  475.     popfree 
  476.     i=$?
  477.     NEWCNFG=$i
  478.     RMnewkey
  479.     BDKEY[$i]=$?
  480.     DEL_KEYS="$DEL_KEYS ${BDKEY[$i]}"
  481.     BDKEY[$bd]=${BDKEY[$i]}
  482.     BDCHGS[$i]=$ADD_DEL_CHG
  483.     BDTYPE[$i]=$changed
  484.     BDTYPE[$bd]=$changed
  485.     BDNAME[$i]="${MODNAME[$CURDRV]}"
  486.     BDMODNAME[$i]="${MODNAME[$CURDRV]}"
  487.     BDMODINDX[$i]=$CURDRV
  488.     BDCNFG[$i]="$Y"
  489.     BDUNIT[$i]="${BDUNIT[$bd]}"
  490.     if [ -f "${ROOT}/etc/conf/pack.d/${MODNAME[$CURDRV]}/disk.cfg" ]
  491.     then
  492.         if [ -z "${BDUNIT[$bd]}" ]
  493.         then
  494.             BDUNIT[$i]="-1"
  495.         fi
  496.     fi
  497.     BDIPL[$i]="${BDIPL[$bd]}"
  498.     BDITYPE[$i]="${BDITYPE[$bd]}"
  499.     eval 'let x=${MODNAME[$CURDRV]}+1'
  500.     eval ${MODNAME[$CURDRV]}=\$x
  501. fi
  502. BDIRQ[$NEWCNFG]="${BDIRQ[$bd]}"
  503. BDPORTSTART[$NEWCNFG]="${BDPORTSTART[$bd]}"
  504. BDPORTEND[$NEWCNFG]="${BDPORTEND[$bd]}"
  505. BDADDRSTART[$NEWCNFG]="${BDADDRSTART[$bd]}"
  506. BDADDREND[$NEWCNFG]="${BDADDREND[$bd]}"
  507. BDDMA[$NEWCNFG]="${BDDMA[$bd]}"
  508. BDCNFG[$NEWCNFG]="$Y"
  509. }
  510.  
  511. function verifydriver
  512. {
  513. # verifydriver()
  514. # Called when the F4=Verify hotkey is selected from within a New
  515. # Software Device Drivers screen to verify the entry.
  516. # Calling/Exit State: void.
  517.  
  518. [ "$DCUDEBUG" -gt 3 ] && {
  519. print -u2 "$0 called"
  520. set -x
  521. }
  522.     verifyconf $CNFGBDFID $CNFGBDINDX
  523. }
  524.