function ssw_jsoc_wave2ds, wave, endtime,  cadence=cadence, jsoc2=jsoc2, time_type=time_type
;
;+
;   Name: ssw_jsoc_wave2ds
;
;   Purpose: return JSOC data series for input 'wave' + optional 'endtime')
;
;   Input Parameters:
;      wave - desired wave, (AIA UV/EUV/VIS , HMI, like 'blos', 'cont', 'velocity' etc.)
;      endtime - optionally, supply time (auto NRT vs. Archival Data Series names )
; 
;    Keyword Parameters:
;       cadence - (output) - always defined = max cadence for input wave [,endtime] older/slotted + nrt 
;
;   History:
;      Circa 1-may-2010 - S.L.Freeland helper for ssw_jsoc suite
;      17-dec-2015 - S.L.Freeland - add TIME_TYPE output keyword 
;      20-feb-2021 - S.L.Freeland - made HMI waves blos/cont Case Insentive(!)
;      28-feb-2023 - S.L.Freeland - add HMI velocity/dopplergrams - more HMI WAVE={synonyms}
;      25-feb-2023 - S.L.Freeland - assure CADENCE always defined on output

if n_elements(wave) eq 0 then begin 
   box_message,'No wave supplied, assuming EUV'
   wave=171
endif

swave=strlowcase(strtrim(wave,2))
swave4=strmid(swave,0,4) ; HMI allowed strings uniq to this# characters
hmi=is_member(swave4,'blos,mag,magn,m,cont,c,ic,v,dop,dopp,vel,velo')  
;                    ^^^^^^^^^^^^^^ allowed synonyms (crazy I know... more for Me than you, sorry..)
ds=(['aia.lev1','hmi.'])(hmi)
cadence=(['12s','45s'])(hmi)   ; likely now updated below ; cant hurt, so leaving it in. 
time_type=(['CCSDS','TAI'])(hmi)  
case 1 of
   hmi: begin
      case 1 of
         is_member(swave4,'cont,c,ic'): type='Ic'                     ; Continumm
         is_member(swave4,'mag,magn,blos,m'): type='M'                ; Magnetogram(blos)
         is_member(swave4,'dopp,dop,vel,velo,v'): type='V'            ; Velocity/Dopplegram
         else: type='M'  ; don't think can get here but magnetogram/"blos" is the "most popular" HMI
      endcase
      ;               depracated-> type=(['Ic','M'])(swave eq 'blos' or swave eq 'mag')
   endcase
   is_member(swave,'94,131,171,193,211,304,335') : begin
      cadence='12s'
      type='euv'
   endcase
   is_member(swave,'1600,1700'): begin 
      cadence='24s'
      type='uv'
   endcase
   is_member(swave,'vis,4500'): begin 
      cadence='1h'
      type='vis'
   endcase
   else: begin
      box_message,'wave not recognized! defaulting to aia euv..'
      cadence='12s'
      type='euv'
   endcase
endcase

retval=arr2str([ds,type,cadence],'_')
retval=str_replace(retval,'._','.')
jsoc2=0

if n_elements(endtime) gt 0 then begin 
   dt=ssw_deltat(reltime(/now),ref=endtime,/days)
   case 1 of 
      dt gt 10: ; assume ok
      else: begin 
         serstr=ssw_jsoc(/series_struct,ds=retval)
         interval=gt_tagval(serstr,/interval,missing='')
         if required_tags(interval,/lastrecord) then begin 
            send=strextract(interval.lastrecord,'[',']')
            dt=ssw_deltat(send,ref=endtime,/hours)
            if dt lt 0 then  begin
               dstype=(['slotted/default','default'])(hmi)
               box_message,'Endtime later than '+ dstype +'( '+retval +') series end; using _nrt'
               retval=([ds+'_nrt2',retval+'_nrt'])(hmi)
               ;cadence=(['',cadence])(hmi) ; skip this, now aia cadence older(slotted) vs. nrt done above
               jsoc2=1
            endif
         endif
      endcase
    endcase
endif 


return,retval
end
   

   
         
   

