1*03831d35Sstevel /* 2*03831d35Sstevel * CDDL HEADER START 3*03831d35Sstevel * 4*03831d35Sstevel * The contents of this file are subject to the terms of the 5*03831d35Sstevel * Common Development and Distribution License, Version 1.0 only 6*03831d35Sstevel * (the "License"). You may not use this file except in compliance 7*03831d35Sstevel * with the License. 8*03831d35Sstevel * 9*03831d35Sstevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*03831d35Sstevel * or http://www.opensolaris.org/os/licensing. 11*03831d35Sstevel * See the License for the specific language governing permissions 12*03831d35Sstevel * and limitations under the License. 13*03831d35Sstevel * 14*03831d35Sstevel * When distributing Covered Code, include this CDDL HEADER in each 15*03831d35Sstevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*03831d35Sstevel * If applicable, add the following below this CDDL HEADER, with the 17*03831d35Sstevel * fields enclosed by brackets "[]" replaced with your own identifying 18*03831d35Sstevel * information: Portions Copyright [yyyy] [name of copyright owner] 19*03831d35Sstevel * 20*03831d35Sstevel * CDDL HEADER END 21*03831d35Sstevel */ 22*03831d35Sstevel /* 23*03831d35Sstevel * Copyright 2002 Sun Microsystems, Inc. All rights reserved. 24*03831d35Sstevel * Use is subject to license terms. 25*03831d35Sstevel */ 26*03831d35Sstevel 27*03831d35Sstevel #pragma ident "%Z%%M% %I% %E% SMI" 28*03831d35Sstevel 29*03831d35Sstevel /* 30*03831d35Sstevel * status.c: support for scadm version option (to display the service processor 31*03831d35Sstevel * status, fw version) 32*03831d35Sstevel */ 33*03831d35Sstevel 34*03831d35Sstevel #include <libintl.h> 35*03831d35Sstevel #include <stdio.h> 36*03831d35Sstevel #include <string.h> 37*03831d35Sstevel #include <time.h> /* required by librsc.h */ 38*03831d35Sstevel 39*03831d35Sstevel #include "librsc.h" 40*03831d35Sstevel #include "adm.h" 41*03831d35Sstevel 42*03831d35Sstevel 43*03831d35Sstevel void 44*03831d35Sstevel ADM_Process_status(int verbose) 45*03831d35Sstevel { 46*03831d35Sstevel rscp_msg_t Message; 47*03831d35Sstevel struct timespec Timeout; 48*03831d35Sstevel dp_rsc_status_r_t *rscStatus; 49*03831d35Sstevel 50*03831d35Sstevel 51*03831d35Sstevel ADM_Start(); 52*03831d35Sstevel 53*03831d35Sstevel Message.type = DP_RSC_STATUS; 54*03831d35Sstevel Message.len = 0; 55*03831d35Sstevel Message.data = NULL; 56*03831d35Sstevel ADM_Send(&Message); 57*03831d35Sstevel 58*03831d35Sstevel Timeout.tv_nsec = 0; 59*03831d35Sstevel Timeout.tv_sec = ADM_TIMEOUT; 60*03831d35Sstevel ADM_Recv(&Message, &Timeout, 61*03831d35Sstevel DP_RSC_STATUS_R, sizeof (dp_rsc_status_r_t)); 62*03831d35Sstevel 63*03831d35Sstevel /* Print the status */ 64*03831d35Sstevel rscStatus = (dp_rsc_status_r_t *)Message.data; 65*03831d35Sstevel (void) printf("\n"); 66*03831d35Sstevel (void) printf("%s v%d.%d\n", 67*03831d35Sstevel gettext("SC Version"), 68*03831d35Sstevel rscStatus->release_rev_major, rscStatus->release_rev_minor); 69*03831d35Sstevel (void) printf("%s v%d.%d.%d\n", 70*03831d35Sstevel gettext("SC Bootmon Version: "), 71*03831d35Sstevel rscStatus->bootmon_rev_major, rscStatus->bootmon_rev_minor, 72*03831d35Sstevel rscStatus->bootmon_rev_micro); 73*03831d35Sstevel if (verbose) { 74*03831d35Sstevel (void) printf("%s %08lX\r\n\n", gettext("SC Bootmon checksum:"), 75*03831d35Sstevel rscStatus->bm_cksum); 76*03831d35Sstevel } 77*03831d35Sstevel 78*03831d35Sstevel (void) printf("%s v%d.%d.%d\n", 79*03831d35Sstevel gettext("SC Firmware Version: "), 80*03831d35Sstevel rscStatus->main_rev_major, rscStatus->main_rev_minor, 81*03831d35Sstevel rscStatus->main_rev_micro); 82*03831d35Sstevel if (verbose) { 83*03831d35Sstevel (void) printf("%s %02d\r\n", gettext("SC Build Release:"), 84*03831d35Sstevel rscStatus->rsc_build); 85*03831d35Sstevel } 86*03831d35Sstevel 87*03831d35Sstevel (void) printf("\n"); 88*03831d35Sstevel 89*03831d35Sstevel 90*03831d35Sstevel if (verbose) { 91*03831d35Sstevel (void) printf("%s %08lX\r\n\n", 92*03831d35Sstevel gettext("SC firmware checksum:"), rscStatus->fw_cksum); 93*03831d35Sstevel (void) printf("%s %s\r\n\n", 94*03831d35Sstevel gettext("SC firmware built:"), rscStatus->creationDate); 95*03831d35Sstevel (void) printf("%s %ld%s\r\n\r\n", 96*03831d35Sstevel gettext("SC System Memory Size:"), rscStatus->sys_mem, 97*03831d35Sstevel gettext("MB")); 98*03831d35Sstevel (void) printf("%s %lx\r\n\r\n", 99*03831d35Sstevel gettext("SC NVRAM Version ="), rscStatus->nvram_version); 100*03831d35Sstevel } 101*03831d35Sstevel /* 102*03831d35Sstevel * Not currently implemented in firmware 103*03831d35Sstevel * (void) printf("%s = %d\n", 104*03831d35Sstevel * gettext("Users currently logged in"), rscStatus->nusers); 105*03831d35Sstevel */ 106*03831d35Sstevel 107*03831d35Sstevel if (verbose) { 108*03831d35Sstevel /* 4388953 Display SC board type */ 109*03831d35Sstevel (void) printf("%s %d\r\n\r\n", 110*03831d35Sstevel gettext("SC hardware type:"), rscStatus->hardware_rev); 111*03831d35Sstevel } 112*03831d35Sstevel 113*03831d35Sstevel ADM_Free(&Message); 114*03831d35Sstevel } 115